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)