1. 程式人生 > >JAVA反射機制的簡單例項和說明

JAVA反射機制的簡單例項和說明

一:反射機制的作用主要是: 1:可以將.class檔案轉為.java檔案,實現反編譯 2:可以通過類的名字得到這個JAVA物件中所有的屬性和方法。 3:用的最多的就是spring框架了。因為我們在配置檔案中配置好類的應射關係後,就可以通過反射機制自動找它的屬性和方法了。框架再複雜也是使用的這種基本原理,只是它在上面又做了很多封裝。 主要用到以下幾個類: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.reflect.Method java.lang.Modifier 這幾個類的詳細使用方法可以參看JDK的文件,上面都有詳細介紹,這也是我們學習時最好一個文件。 二:為了測試看效果。我們先建立一個實體的類
package com.common; public class User { private int id; private String name; private String sex; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 三:反射機制建立一個類的物件
package com.common; public class ReflectTest { public static void main(String[] args) { try { Class classUser = Class.forName("com.common.User"); User user = (User)classUser.newInstance(); } catch (Exception e) { e.printStackTrace(); } } } 四:獲取一個物件裡面所有的方法,一共有三種方式得到類 package com.common; import java.lang.reflect.Method; public class ReflectTest { public static void main(String[] args) { try { /* * 方法1 */ Class user = Class.forName("com.common.User"); /* * 方法2 * Class user = User.class; */ /* * 方法三 User u = new User(); Class user = u.getClass(); */ Method[] method = user.getMethods(); for(int i=0;i<method.length;i++){ System.out.print(method[i].toString()); } } catch (Exception e) { e.printStackTrace(); } } } 五:獲取一個類裡面所有的屬性和指定的一個屬性
package com.common; import java.lang.reflect.Field; public class ReflectTest { public static void main(String[] args) { try { //得到類的class Class classUser = Class.forName("com.common.User"); //取得所有的屬性 Field[] fields = classUser.getDeclaredFields(); for(Field field : fields){ System.out.println(field.getName()); //field物件還有很多屬性可以取到,這個可以參看JDK,這裡就不全部列出了 } //取得一個特定的屬性 Field field = classUser.getDeclaredField("id"); field.getName(); } catch (Exception e) { e.printStackTrace(); } } } 更多的取值可以參看JDK幫助文件中的java.lang.reflect包下面的類,我們在使用spring框架的時候,在配置檔案中配置了類名為什麼就能找到它所有的屬性和方法,就是通過反射機制做到的,後面我們會講spring框架的搭建和配置。慢慢來,先了解簡單的原理再深入研究是一個不錯的選擇。