当前位置:编程学习 > JAVA >>

java反射机制——解析

1、Class类对象的使用
可以通过Constructor 类调用有参构造方法完成对象的实例化操作
[html]
public class DumpMethods {  
  
    public static void main(String[] args) {  
        try {  
            // 定义一个Person实例对象  
            Person man = new Person("测试", 30);  
            //获取类对象  
            Class manClass=man.getClass();  
            Class param[]=new Class[2];  
            param[0]=java.lang.String.class;  
            param[1]=Integer.TYPE;  
            //获取带两个参数的构造函数  
            Constructor manCon=manClass.getConstructor(param);  
            Object ob[]=new Object[2];  
            ob[0]=new String("zjh");  
            ob[1]=new Integer(100);  
            //根据Class类对象调用对应的构造函数生成实例对象  
            Person newMan=(Person)manCon.newInstance(ob);  
            System.out.println("name=    "+newMan.getName());  
            System.out.println("age=     "+newMan.getAge());  
        } catch (Throwable e) {  
            System.err.println(e);  
        }  
    }  
  
}  
输出结果:
name=    zjh
age=     100
2)Field对象使用
[html] 
public class DumpMethods {  
  
    public static void main(String[] args) {  
        try {  
            // 定义一个Person实例对象  
            Person man = new Person("测试", 30);  
            Class manClass=man.getClass();  
            //下面这种获取属性对象,该属性必须是public  
            Field nameField=manClass.getField("name");  
            //下面这种对属性是否public活private没有要求  
            Field ageField=manClass.getDeclaredField("age");  
[html] 
//这里面设置值只能是public,private的不能设置  
[html] 
            nameField.set(man, "ceshi");  
            System.out.println(man.getName());  
        } catch (Throwable e) {  
            System.err.println(e);  
        }  
    }  
  
}  
输出结果:  
[html]
   
ceshi
3)method对象的使用
[html] 
public class DumpMethods {  
  
    public static void main(String[] args) {  
        try {  
            // 定义一个Person实例对象  
            Person man = new Person("测试", 30);  
            Class manClass=man.getClass();  
            Class paramName[]=new Class[1];  
            paramName[0]=java.lang.String.class;  
            Method nameMethod=manClass.getMethod("setName", paramName);  
            nameMethod.invoke(man, "zjh");  
            System.out.println("man对象name==="+man.getName());  
        } catch (Throwable e) {  
            System.err.println(e);  
        }  
    }  
  
}  
输出结果:  
[html] 
man对象name===zjh  
[html] 
4)constructor对象的使用  
[html] 
<pre class="html" name="code">public class DumpMethods {  
  
    public static void main(String[] args) {  
        try {  
            // 定义一个Person实例对象  
            Person man = new Person("测试", 30);  
            //获取类对象  
            Class manClass=man.getClass();  
            Class param[]=new Class[2];  
            param[0]=java.lang.String.class;  
            param[1]=Integer.TYPE;  
            //获取带两个参数的构造函数  
            Constructor manCon=manClass.getConstructor(param);  
            Object ob[]=new Object[2];  
            ob[0]=new String("zjh");  
            ob[1]=new Integer(100);  
            //根据Class类对象调用对应的构造函数生成实例对象  
            Person newMan=(Person)manCon.newInstance(ob);  
            System.out.println("name=    "+newMan.getName());  
            System.out.println("age=     "+newMan.getAge());  
        } catch (Throwable e) {  
            System.err.println(e);  
        }  
    }  
  
}  
</pre><br>  
<br>  
<pre></pre>  
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,