「java属性和属性值」java 设置属性值
本篇文章给大家谈谈java属性和属性值,以及java 设置属性值对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 递归替换复杂对象属性值
- 2、java 遍历 类属性的属性值
- 3、java 传过来一个对象,如何得到这个对象的所有属性值?
- 4、java如果获取一个对象中List下的属性和值
- 5、java 类的属性值为什么不能直接修改
- 6、java 中引用值和属性值(实际值) 提问
java 递归替换复杂对象属性值
本示例中又三个对象嵌套:
UserBO:复杂对象,其中一个属性是ListAddressBO或者MapAddressBO
AddressBO:其中一个属性是SubAddressBO
SubAddressBO:包含目标属性addrId,且是string类型,查找addrId的值
任务:UserBO是一个复杂对象,该对象中肯定存在目标属性addrId(String类型,递归方法只能找string类型的属性,找其他类型自行修改代码),只是不知道addrId在哪个子属性中,如果UserBO存在多个addrId属性,那么只遍历出遇到的第一个addrId的值即可。
注意:(本例子在遍历复杂对象时,如果找到第一个目标属性,则退出,不在继续遍历,后面bolg有遍历复杂对象所有属性的文章)
1、本示例提供了两种方法来获取复杂对象中指定属性的值,一种是利用递归,另一种是直接把复杂对象转换成json串,再截取。
2、本示例对于复杂对象中不包含目标属性时,会返回空字符串。
3、目标属性可以存在于自定义类、list、map、数组中
4、复杂对象可以是复杂嵌套的BO/ListBO/MapObject,BO,目标属性存在于BO中
5、对于复杂对象是这种嵌套格式(ListListBO/ListMapObject,BO/MapObject,ListBO)的没有做测试
————————————————
版权声明:本文为CSDN博主「一路奔跑1314」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
java 遍历 类属性的属性值
用反射,代码你可以参考下面的:
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Field[] field = model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组
for(int j=0 ; jfield.length ; j++){ //遍历所有属性
String name = field[j].getName(); //获取属性的名字
System.out.println("attribute name:"+name);
String type = field[j].getGenericType().toString(); //获取属性的类型
if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
String value = (String) m.invoke(model); //调用getter方法获取属性值
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Integer")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Integer value = (Integer) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Short")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Short value = (Short) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value); }
}
if(type.equals("class java.lang.Double")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) );
Double value = (Double) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.lang.Boolean")){
Method m = model.getClass().getMethod("get"+name);
Boolean value = (Boolean) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value);
}
}
if(type.equals("class java.util.Date")){
Method m = model.getClass().getMethod("get"+name);
Date value = (Date) m.invoke(model);
if(value != null){
System.out.println("attribute value:"+value.toLocaleString());
}
}
}
java 传过来一个对象,如何得到这个对象的所有属性值?
1、过去某个类的某个属性:
2,可以通过对象调用其属性:
3,创建对象 :类名 对象名 = new 类名();
4,调用属性:对象名.属性
5,获取某个对象的所有属性
6,数组类型[] 数组名 = 对象名.getClass().getDeclaredFields();
7,使用反射
public static void main(String[] args) {
Model model = new Model();
Field fd = new Field();
fd.getField(model);
}
private void getField(Object model) {
java.lang.reflect.Field[] fields = model.getClass().getDeclaredFields();
for(java.lang.reflect.Field f:fields){
System.out.println(f.getName());
}
}
java如果获取一个对象中List下的属性和值
Column column=excel.sheet.columns.get(int index);
column.getXXXXXXXXXXXXXX
excel也是一个List对象,list里面包括sheet对象,还有columns对象,columns是个List数组
java 类的属性值为什么不能直接修改
如果你把属性设为 public 就可以直接修改呀。,用方法是因为属性是私有的,通过一个方法封装了它
java 中引用值和属性值(实际值) 提问
解释如下
public static void main(String[] args) {
// 首先要明白一个问题,Integer为对象
// 使用 == (双等于)的比较为对象引用地址的比较,而不是对象所代表值的比较
// 当 Integer 的对象值在 -128~127 之间时,多个对象会引用同一个数据,
// 即引用地址是相同的,而不在这个范围内的值则不会
// 比较范围内的值 -128~127
Integer a1 = 100;
Integer b1 = 100;
System.out.println(a1==b1); // true
// 比较范围外的值
Integer a2 = 200;
Integer b2 = 200;
System.out.println(a2==b2); // false 不在范围内
// new 对象比较
Integer a3 = new Integer(100);
Integer b3 = new Integer(100);
System.out.println(a3==b3); // false 使用的为new关键字
// 可以看出,如果是自动装包 即:Integer a = 3;
// Java在 -128~127 这个数值之间会自动引用同一个地址
// 而使用 new 关键字创建的对象则不会进行
// 如果要比较值的话可以这样
// 1. 使用equals方法
System.out.println(a2.equals(b2));
// 2. 使用 intValue() 方法
System.out.println(a2.intValue()==b2.intValue());
}
关于java属性和属性值和java 设置属性值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-05,除非注明,否则均为
原创文章,转载请注明出处。