java 反射機制-獲取對應class信息。本站提示廣大學習愛好者:(java 反射機制-獲取對應class信息)文章只能為提供參考,不一定能成為您想要的結果。以下是java 反射機制-獲取對應class信息正文

1 package reflection;
2
3 public class User {
4 public String name;
5 protected int age;
6 String address;
7 private String sex;
8
9 public User() {
10 super();
11 }
12
13 public User(String name, int age, String sex) {
14 super();
15 this.name = name;
16 this.age = age;
17 this.sex = sex;
18 }
19
20 public String getName() {
21 return name;
22 }
23 public void setName() {
24 this.name = "test";
25 }
26 public int getAge() {
27 return age;
28 }
29 public String getSex() {
30 return sex;
31 }
32 public void setSex(String sex) {
33 this.sex = sex;
34 }
35
36 }
class User
1 package reflection;
2
3 import java.lang.reflect.Constructor;
4 import java.lang.reflect.Field;
5 import java.lang.reflect.Method;
6
7 public class Demo01 {
8 public static void main(String[] args) {
9
10 Class<?> c;
11 try {
12 c = Class.forName("reflection.User");
13
14 // 獲取類的稱號
15 System.out.println("獲取類的稱號");
16 System.out.println("getName():" + c.getName());// 取得包名+類名
17 System.out.println("getSimpleName():" + c.getSimpleName());// 取得類名
18 System.out.println("getCanonicalName():" + c.getCanonicalName());// 取得類名
19 System.out.println("*******************************");
20 // 獲取屬性信息
21 System.out.println("獲取屬性信息");
22 Field[] fields = c.getDeclaredFields();
23 // Field[] fields = c.getFields(); 只能獲取public修飾的屬性信息
24 for (Field f : fields) {
25 String fName = f.getName();
26 System.out.println(c.getDeclaredField(fName));
27 }
28 System.out.println("*******************************");
29 // 獲取辦法信息
30 System.out.println("獲取辦法信息");
31 Method[] methods = c.getDeclaredMethods();
32 for (Method m : methods) {
33 // String mName = m.getName();
34 System.out.println(m.getName() + "-->" + m);
35 }
36 System.out.println("經過稱號獨自獲取對應的getName辦法:" + c.getDeclaredMethod("getName"));
37 System.out.println("經過稱號獨自獲取對應的setSex辦法:" + c.getDeclaredMethod("setSex", String.class));// 辦法有參,必需傳遞參數類型
38 System.out.println("*******************************");
39 // 獲取結構器信息
40 System.out.println("獲取結構器信息");
41 Constructor<?>[] constructor = c.getConstructors();
42 for (Constructor<?> cons : constructor) {
43 System.out.println(cons);
44 }
45
46 } catch (ClassNotFoundException | NoSuchFieldException | SecurityException e) {
47 e.printStackTrace();
48 } catch (NoSuchMethodException e) {
49 e.printStackTrace();
50 }
51 }
52 }
output:
獲取類的稱號 getName():reflection.User getSimpleName():User getCanonicalName():reflection.User ******************************* 獲取屬性信息 public java.lang.String reflection.User.name protected int reflection.User.age java.lang.String reflection.User.address private java.lang.String reflection.User.sex ******************************* 獲取辦法信息 getName-->public java.lang.String reflection.User.getName() setName-->public void reflection.User.setName() setSex-->public void reflection.User.setSex(java.lang.String) getSex-->public java.lang.String reflection.User.getSex() getAge-->public int reflection.User.getAge() 經過稱號獨自獲取對應的getName辦法:public java.lang.String reflection.User.getName() 經過稱號獨自獲取對應的setSex辦法:public void reflection.User.setSex(java.lang.String) ******************************* 獲取結構器信息 public reflection.User() public reflection.User(java.lang.String,int,java.lang.String)