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(); //得到父类,然后赋给自己 }
时间: 2024-02-15 13:28:49 浏览: 66
关于c#中单例模式的一些问题
这是另一个 Java 代码片段,它是基于之前的代码片段继续操作一个对象的属性。这段代码的作用是获取 obj 对象以及其父类中所有类型为 Integer,名称包含 "Types" 的字段名,并将这些字段名添加到之前定义的 fieldNameList 中。
该代码使用了反射机制,通过 tempClass.getDeclaredFields() 方法获取 obj 对象中所有声明的字段,并遍历这些字段。对于每个字段,使用 f.getType() 方法获取其类型,并使用 getName() 方法获取类型名称。如果字段类型为 Integer,且字段名称包含 "Types",则将该字段的名称添加到 fieldNameList 中。
由于 obj 对象可能存在多级父类,因此代码使用 tempClass.getSuperclass() 方法获取 obj 对象的父类,然后将其赋值给 tempClass 变量继续进行遍历。这样就可以获取 obj 对象以及其所有父类中符合条件的字段名。
阅读全文