getFields()与getDeclaredFields()区别
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无关