`
java4evero
  • 浏览: 45724 次
文章分类
社区版块
存档分类
最新评论

java reflect

阅读更多

    import java.lang.reflect.Field;  
import java.lang.reflect.Method;  
 
 
 
class User{  
      
     private String userName="";  
       
        public String getUserName() {  
        return userName;  
    }  
        public int add(int a, int b) {  
            return a + b;  
        }  
        private int minus(int a,int b)  
        {  
            return a-b;  
        }  
 
}  
public class ReflectTest {  
     
    /** 
     * @param args 
     */ 
    public static void main(String[] args) throws Exception {  
          
        Class<?> classType=Class.forName("User");//得到class对象  
        Method[] meth=classType.getDeclaredMethods();//得到该class所有声明method  
        for (Method method : meth) {  
            System.out.println("method:"+method);  
        }  
        Field [] fiel=classType.getDeclaredFields();//得到该class所有声明field  
        for (Field field : fiel) {  
            System.out.println("fiueld:"+field);  
        }  
        User user=(User)classType.newInstance();//通过class获得User对象  
        Method method=classType.getMethod("add",new Class<?>[]{int.class,int.class});//获取add方法,考虑到方法重载,还要加上参数条件才能唯一限定一个方法  
        int result=(Integer)method.invoke(user, new Object[]{3,9});//通过invoke调用方法  
        System.out.println("addresult:"+result);  
        /** 
         * 通过反射来访问方法的私有方法 
         */ 
        Method methodminus=classType.getDeclaredMethod("minus",new Class<?>[]{int.class,int.class});//通过getDeclaredMethod取得私有的方法  
        methodminus.setAccessible(true);//将可访问性设置为true  
        int resultminus=(Integer)methodminus.invoke(user, new Object[]{3,9});//通过invoke调用方法  
        System.out.println("resultminus:"+resultminus);  
        /** 
         * 通过反射来访问方法的私有属性 
         */ 
        Field field=classType.getDeclaredField("userName");  
        field.setAccessible(true);//将可访问性设置为true  
        field.set(user, "bingyingao");//给私有属性userName赋值  
        System.out.println(user.getUserName());  
    }  
 


 
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics