1.package study.reflection; 2. 3.public class People { 4.public String name = null; 5.private String sex = null; 6.private String age = null; 7.private String tel = null; 8.private String address = null; 9.public static String s = null; 10.static { 11. System.out.println("loading People"); 12.} 13. 14.public static void showPeople() { 15. 16.} 17. 18.public People(String name) { 19. this.name = name; 20.} 21. 22.private People() { 23. this.name = name; 24.} 25. 26.private void showPeopleInfo() { 27. System.out.println(name + " " + sex + " " + age + " " + tel + " " 28. + address); 29.} 30. 31.public String getName() { 32. return name; 33.} 34. 35.public void setName(String name) { 36. this.name = name; 37.} 38. 39.public String getSex() { 40. return sex; 41.} 42. 43.public void setSex(String sex) { 44. this.sex = sex; 45.} 46. 47.public String getAge() { 48. return age; 49.} 50. 51.public void setAge(String age) { 52. this.age = age; 53.} 54. 55.public String getTel() { 56. return tel; 57.} 58. 59.public void setTel(String tel) { 60. this.tel = tel; 61.} 62. 63.public String getAddress() { 64. return address; 65.} 66. 67.public void setAddress(String address) { 68. this.address = address; 69.} 70. 71.} 72. 73.package esg; 74. 75.import java.lang.reflect.Constructor; 76.import java.lang.reflect.Field; 77.import java.lang.reflect.Method; 78. 79.import study.reflection.People; 80. 81.public class Esg { 82. 83.public static void main(String[] a) throws ClassNotFoundException { 84. Class c1 = People.class; 85. 86. Field[] fs = c1.getFields(); 87. System.out.println("*******getFields()*********"); 88. for (int i = 0; i < fs.length; i++) { 89. System.out.println(fs[i].getName()); 90. } 91. System.out.println("*******getDeclaredFields()*********"); 92. fs = c1.getDeclaredFields(); 93. for (int i = 0; i < fs.length; i++) { 94. System.out.println(fs[i].getName()); 95. } 96. System.out.println("*******getMethods()*********"); 97. Method[] md = c1.getMethods(); 98. for (int i = 0; i < md.length; i++) { 99. System.out.println(md[i].getName()); 100. } 101. System.out.println("*******getDeclaredMethods()*********"); 102. md = c1.getDeclaredMethods(); 103. for (int i = 0; i < md.length; i++) { 104. System.out.println(md[i].getName()); 105. } 106. 107. System.out.println("*******getConstructors()*********"); 108. Constructor[] con = c1.getConstructors(); 109. for (int i = 0; i < con.length; i++) { 110. System.out.println(con[i].getName()); 111. } 112. System.out.println("*******getDeclaredConstructors()*********"); 113. con = c1.getDeclaredConstructors(); 114. for (int i = 0; i < con.length; i++) { 115. System.out.println(con[i].getName()); 116. } 117.} 118.}
* getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
* getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
* getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关
相关推荐
- 类属性(Field):可以通过getFields或getDeclaredFields来获取类中定义的所有属性。 - 类的访问权限:可以判断类、方法或属性的访问权限,如public、protected、private等。 在实际开发中,使用反射机制可以减少...
与`getFields()`不同,`getDeclaredFields()`方法返回类声明的所有字段,无论其访问权限如何。这包括`public`、`protected`、默认(包访问)和`private`字段,但不包括从超类继承的字段。如果你想获取类自身声明的...
关于获取类的字段有两种方式:getFields()和getDeclaredFields()。 getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。 getDeclaredFields():获得某个类的所有声明的字段,即包括public、...
但是,getFields() 方法不能获取私有属性,需要使用 getDeclaredFields() 方法来获取所有属性,包括私有属性。 4. 获取一个类的字节码文件对象 可以使用对象名.class 或类名.getClass() 方法来获取一个类的字节码...
- **getFields()与getDeclaredFields()**:用于获取公共字段和所有字段,包括私有字段。 3. **应用场景**: - **动态代理**:反射可以创建动态代理类,实现接口并在运行时决定代理对象的行为。 - **插件系统**:...
`getFields()`方法返回类的所有公共字段,而`getDeclaredFields()`则会返回类中声明的所有字段,包括私有字段。 - 示例中的代码展示了如何获取类`A`的属性信息。`getFields()`只获取公有属性,`getDeclaredFields()...
接着,我们通过`getFields()`或`getDeclaredFields()`获取类的所有字段。`getFields()`返回的是public字段,而`getDeclaredFields()`则包含所有字段,包括private和protected的。 在获取字段后,我们遍历这些字段,...
我们可以通过`Class.forName()`或`MyClass.class`来获取类的Class对象,然后使用`getFields()`方法获取所有的公有字段,如果需要获取私有字段,可以使用`getDeclaredFields()`。这些方法返回的是`Field`对象的数组,...
2. **获取属性信息**:通过`Class`对象的`getDeclaredFields()`或`getFields()`方法获取类的所有字段。 3. **设置Bean的属性值**:对于Map到Bean的转换,遍历Map,使用反射调用Bean的setter方法来设置每个属性的值...
4. 获取字段:类似地,getFields方法和getDeclaredFields方法分别用于获取类的所有公开字段和所有字段,包括私有字段。 5. 获取方法:获取公开方法可以用getMethods方法,获取所有方法则使用getDeclaredMethods方法...
在获取Class对象后,我们可以使用getFields()、getDeclaredFields()、getConstructors()、getDeclaredConstructors()、getMethods()、getDeclaredMethods()等方法来获取字段、构造方法、成员方法等信息。 此外,...
通过Class对象的getFields()或getDeclaredFields()方法获取Field对象,然后使用set()和get()方法对变量进行赋值和读取。注意,对于私有变量,需要先调用setAccessible(true)来取消访问检查。 5. 数组的反射应用: ...
在Java中,我们可以使用`Class`类的`getDeclaredFields()`或`getFields()`方法来获取类的所有字段,包括私有、公共以及其他访问修饰符的字段。`getDeclaredFields()`会返回包括父类中声明的所有字段,而`getFields()...
可以通过`Class`类的`getDeclaredFields()`或`getFields()`方法获取类的所有属性。 - `getDeclaredFields()`:返回该类及该类自身定义的所有属性。 - `getFields()`:返回该类及其父类中声明为public的属性。 ####...
`Class`对象提供了`getFields()`、`getField(String name)`、`getDeclaredFields()`和`getDeclaredField(String name)`等方法来获取类的字段信息。`getFields()`返回所有公共字段,`getField(String name)`获取指定...
• 获取类中的变量(Field)可以使用 `getFields()` 或 `getDeclaredFields()`,方法(Method)使用 `getMethods()` 和 `getDeclaredMethods()`,构造器(Constructor)使用 `getConstructors()` 和 `...
4. Field对象:代表类的字段,通过Class的getFields()和getDeclaredFields()获取。可以使用Field对象来读写字段的值,包括私有字段。 递归是计算机科学中的一个重要概念,它是指在函数或方法中调用自身的行为。在...
通过Class对象的getFields()或getDeclaredFields()方法可以获取到Field对象,然后可以使用set()和get()方法来动态地访问和修改对象的属性值。这在处理未知类型的对象时特别有用,例如序列化和反序列化,或者在不破坏...
1. **获取字段**:使用`getFields`获取所有公共字段,使用`getDeclaredFields`获取所有字段(包括私有)。 - 示例:`Field[] fields = c.getDeclaredFields();` 2. **访问字段值**:使用`get`方法获取字段的值。 ...