龙空技术网

java 反射获取private属性和方法(子类和所有父类)

一步走到头 632

前言:

现时我们对“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方法