前言:
现时我们对“java反射获取对象属性值”大概比较关切,小伙伴们都需要剖析一些“java反射获取对象属性值”的相关内容。那么小编也在网上网罗了一些关于“java反射获取对象属性值””的相关内容,希望兄弟们能喜欢,兄弟们一起来了解一下吧!反射,RTTI,Class对象,这些就不说了,看一段代码:
Person 是父类
public class Person {
private String superPropertis;
public String getSuperPropertis() {
return superPropertis;
}
public void setSuperPropertis(String superPropertis) {
this.superPropertis = superPropertis;
}
}
son是子类
public class Son extends Person{
private String son;
public String getSon() {
return son;
}
public void setSon(String son) {
this.son = son;
}
// 获取属性和方法(包括父类方法和私有方法)
static void getClassFieldAndMethod(Class cur_class) {
String class_name = cur_class.getName();
Field[] obj_fields = cur_class.getDeclaredFields();
for (Field field : obj_fields) {
field.setAccessible(true);
System.out.println(class_name + ":" + field.getName());
}
Method[] methods = cur_class.getDeclaredMethods();
for (Method method : methods) {
method.setAccessible(true);
System.out.println(class_name + ":" + method.getName());
}
// 递归调用父类
if (cur_class.getSuperclass() != null) {
getClassFieldAndMethod(cur_class.getSuperclass());
}
}
// 测试main方法
public static void main(String[] args) {
getClassFieldAndMethod(Son.class);
}
}
结果输出:
com.test.fanshe.Son:son
com.test.fanshe.Son:main
com.test.fanshe.Son:getClassFieldAndMethod
com.test.fanshe.Son:getSon
com.test.fanshe.Son:setSon
com.test.fanshe.Person:superPropertis
com.test.fanshe.Person:getSuperPropertis
com.test.fanshe.Person:setSuperPropertis
java.lang.Object:finalize
java.lang.Object:wait
java.lang.Object:wait
java.lang.Object:wait
java.lang.Object:equals
java.lang.Object:toString
java.lang.Object:hashCode
java.lang.Object:getClass
java.lang.Object:clone
java.lang.Object:registerNatives
java.lang.Object:notify
java.lang.Object:notifyAll
标签: #java反射获取对象属性值 #java反射获取对象属性名 #java获取子类属性 #java反射能不能调用private方法