java基础 使用反射获取类中的属性和方法(包括私有的)

    科技2022-07-10  120

    /* *用反射获取类的属性方法,包括private的属性方法 */ @Test public void test1() { Class<Son> sonClass = Son.class; // Field[] getDeclaredFields() // 返回的数组 Field对象反映此表示的类或接口声明的所有字段 类对象。 Field[] fields = sonClass.getDeclaredFields(); for (Object obj : fields) { // private int Test10月.Son.age // private java.lang.String Test10月.Son.name System.out.println(obj); } System.out.println("******************"); // reflect.Method[] getMethods() // 返回一个数组包含Method对象反映此表示的类或接口的所有公共方法Class对象, // 包括那些由类或接口和那些从超类和超接口继承的声明。 Method[] methods = sonClass.getMethods(); for (Object obj : methods) { // public java.lang.String Test10月.Son.getName() // public java.lang.String Test10月.Son.toString() // public void Test10月.Son.setName(java.lang.String)等父类的方法... System.out.println(obj); } System.out.println("***************"); // reflect.Method[] getDeclaredMethods() // 返回一个数组包含Method对象反射的类或接口通过此表示的所有声明的方法Class对象, // 包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。 Method[] sonClassDeclaredMethods = sonClass.getDeclaredMethods(); for (Object obj : sonClassDeclaredMethods) { // private int Test10月.Son.getAge() // private void Test10月.Son.setAge(int) // public java.lang.String Test10月.Son.getName() // public java.lang.String Test10月.Son.toString() // public void Test10月.Son.setName(java.lang.String) System.out.println(obj); } } } class Son { private int age; private String name; @Override public String toString() { return "Son{" + "age=" + age + ", name='" + name + '\'' + '}'; } private int getAge() { return age; } private void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Son() {} }
    Processed: 0.021, SQL: 8