java反射机制总结(一)

以下是我看李兴华老师写的java开发实战经典的笔记:

希望会对你有所帮助。

一个核心:一切的的操作都将使用Object 完成,类,数组的引用都可以使用Object进行接收。

什么是反射?简单的说,就是通过对象找到类。那么,我们如何找到类呢,Object类中定义的getClass() 方法可以通过对象来找到所对应的类,它的返回值的类型是一个Class类,实际上此类就是Java反射的源头。Class表示一个类的本身,通过Class可以完整的获得一个类的完整结构。因为在Class类中本身没有定义任何的构造方法,所以如果要使用则首先实例化对象,那么如何实例化对象呢?1,通过Class.forName(String name) 2,类.class 3,对象.getClass()。其中Class.forName(String name) 是我们常用的一种方式。

那么如果想要通过Class类本身实例化其他类的对象,则可以使用newInstance()方法,但是必须保证被实例化的类中存在在一个无参的构造方法(这点一定记住)。

核心代码如下:
c1 = Class.forName("com.runqian.class.Person");

Person p = null;

per = (Person)c1.newInstance();

但是假如一个类中没有无参的构造方法,那么我们应该如何解决上面的问题呢?

(1)在Class中定义的getConstructors()可以取得本类中的全部构造方法,返回的是Constructor对象的数组。

(2)向构造方法中传递一个对象数组进去,里面包含了构造方法中所需的各个参数

(3)之后通过Consturctor实例化对象。

核心代码如下:

c1 = Class.forName("com.runqian.class.Person");

Person per = null;

Consturctor[] con = c1.getConstructors();

per = (Person)con[0].newInstance("许海飞",24);//此时Person类只有一个Person(String name,int age)的构造方法。

第一个参数的类型为String,第二参数的类型为Integer(在使用时可以自动拆箱)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值