Java的反射机制(1)-反射功能的基本介绍

参考网址:
http://my.oschina.net/u/1407116/blog/209417
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html

在此之前需了解的背景知识:
Class类:
     Class的实例表示正在运行的类和接口,基本的数据类型(boolean, byte, char, short, int, long, float, double)以及void也比表示Class对象。

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。(不能直接new出来)

重要方法:
     newInstance():创建此Class对象所表示的类的一个对象并返回。 只能使用在默认的构造方法中。一定要自己定义无参的构造函数。
     getName():以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称。          
     forName():返回与带有给定字符串名的类或接口相关联的Class对象,Class的静态方法。

代码:
//直接将People类赋值
Class<?> demo1 = People.class;
//调用Class的静态方法forName,返回一个People,即Class的对象
Class<?> demo2 = Class.forName("www.baidu.com.People");
//通过实例的getClass()方法获取类,赋值给Class
People people = new People();
Class<?> demo3 = people.getClass();

People mPeople = null;
mPeople = (People)demo1.newInstance();

Class<People> demo4 = People.class;
People people2 = null;
people2 = demo4.newInstance();

//demo4中应用了泛型。

这边比较乱,画了个图:



反射机制:
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

反射使用:
     Method是反射最基本的一个类。
     getMethod(String name, Class<T>…parameterTypes):返回一个Method对象,它反映此Class对象所表示的类或接口的指定公共成员方法。
     invoke(Object obj, Object… agrs): 对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。

代码:
Method method[] = demo4.getMethods();
     System.out.println(method[0]);
     System.out.println(method[1]);

输出: public java.lang.String www.baidu.com.People.getAge()
      public void www.baidu.com.People.setAge(java.lang.String)

Method myMethod = demo4.getMethod("sayHi");
myMethod.invoke(demo4.newInstance());

输出:
HelloWorld!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值