Java 反射

来源:互联网 发布:网络协议实践 李毅超 编辑:程序博客网 时间:2024/05/14 20:19

       普通我们new出一个对象后,就可以获取这个对象的类名等一系统属性情况,现在反过来处理,通过类名,去操作这个类对象。

       在这之前,有必要介绍一下Class对象,Class对象是所有实例对象的模板,即实例对象是Class对象的实例,Class对象只有一个,它存储了类的所有信息。

       看一个例子最好地介绍反射的特性了,看下面的代码吧:

       public class Person {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void print(){

System.out.println("name:"+name);

}

}

     public class DemoTest {
public static void main(String[] args) throws Exception {
//任何对象都是Class对象
        Class<?> per;
        Object in;
        per=Class.forName("com.rlf.Person");
        System.out.println(per.getName());
        //生成一个实例
        in=per.newInstance();
        //获得方法
        Method method=per.getMethod("setName",new Class[]{String.class});
        //调用方法
        method.invoke(in, new Object[]{"gaofulai"});
        Method print=per.getMethod("print",null);
        print.invoke(in,null);
}
}

     看到没有没,与JNI本地方法的写法基本相似哈!

原创粉丝点击