public void dictionaryConvert(Object obj, HttpServletRequest request) { try { if (obj == null) return; //当前view和entity中的所有types的字段 List<String> fieldNameList = new ArrayList<>(); Class tempClass = obj.getClass(); while (tempClass !=null) { Field[] declaredFields = tempClass.getDeclaredFields(); for (Field f : declaredFields) { f.setAccessible(true); if (f.getType().getName().equals("java.lang.Integer") && f.getName().contains("Types")) { fieldNameList.add(f.getName()); } } tempClass = tempClass.getSuperclass(); //得到父类,然后赋给自己 }
时间: 2023-07-15 13:12:21 浏览: 44
这段代码的作用是将对象中所有类型为java.lang.Integer并且字段名中包含"Types"的属性名保存到一个List中。首先判断传入的对象是否为空,然后通过反射获取对象的Class对象,并通过while循环遍历该对象及其父类的所有 declaredFields 字段。对于每个字段,如果其类型为java.lang.Integer,并且字段名包含“Types”,则将该字段名添加到 fieldNameList 列表中。最后返回 fieldNameList 列表。
相关问题
Object obj=null;if(obj==null) 会报错吗
不会报错。在这个例子中,`Object obj = null;`语句将`obj`变量赋值为`null`,然后`if (obj == null)`语句将检查`obj`是否为`null`。因为`obj`的值为`null`,所以`obj == null`的结果为`true`,`if`语句块中的代码会被执行。
如果没有先将`obj`赋值为`null`,直接使用`if (obj == null)`语句检查`obj`是否为`null`,则会编译错误,因为`obj`未被初始化,它的值是未知的,无法进行比较。在Java中,未初始化的局部变量不能被使用,否则会导致编译错误。
public boolean equals(Object obj) { if (this == obj) // test whether they are same object return true; if (obj == null) // input object is null return false; if (obj instanceof Person) // input object is of type Person { Person p = (Person)obj; // type cassting // compare all the instance variables if (this.name.equals(p.getName())&& this.age == p.getAge()) return true; } return false; }解释
这个方法是一个 Java 中的 equals 方法的示例,用于比较两个 Person 对象是否相等。方法的实现如下:
1. 首先判断两个对象是否为同一个对象,如果是,则直接返回 true,表示它们相等。
```
if (this == obj)
return true;
```
2. 然后判断输入的对象是否为 null,如果是,则返回 false,表示它们不相等。
```
if (obj == null)
return false;
```
3. 接着判断输入对象是否为 Person 类型的对象,如果不是,则返回 false,表示它们不相等。
```
if (!(obj instanceof Person))
return false;
```
4. 如果输入对象是 Person 类型的对象,则将其转换成 Person 类型,并比较两个对象的 name 和 age 属性是否相等。如果相等,则返回 true,表示它们相等,否则返回 false。
```
Person p = (Person)obj;
if (this.name.equals(p.getName()) && this.age == p.getAge())
return true;
else
return false;
```
需要注意的是,当我们重写 equals 方法时,通常还需要重写 hashCode 方法,以保证当两个对象相等时它们的哈希码也相等。这是因为在使用 HashSet、HashMap 等集合时,会根据对象的哈希码来判断对象是否相等,从而实现去重或查找等功能。如果两个相等的对象的哈希码不同,那么它们就无法正确地被集合识别为相等的对象。