关于构造函数反射中出现的易错点

JAVA的反射:在运行时,可以知道任意一个类的所有属性和方法,也可以调用任意一个对象的所有属性和方法的这个功能,称之为反射。

 

先附上一段代码:

 

分析:

1.对于类Person来说,它的构造函数 Person(String str){pStr = str} 前面没有public修饰符。

   问题是在类reflex中能通过 new Person("first")来 创建对象。这是为什么呢。 原来,对于一个包内的所有类来说,如果该类或者它的成员函数没有修饰符的话,默认是 "friend" 的, 这个"friend"不是JAVA中的关键字,而是套用C++中的。 意思是说,它们之间时能互相访问的。

2.而当你通过反射获取没有修饰符的构造函数时,它就认为这是Private成员。你必须通过getDeclaredConstructor函数来获取该构造函数,并且调用setAccessible(true)方法, 暴力访问该"private"构造函数。

3.你通过Class.forName(“String”)方法来获取这个类的Class对象时,括号内的string必须是带包名的类。比如上段代码是"com.itheima.Person",如果你直接用"Person",就会提示你找不到该Class。

4.必须抛异常,不然还是会报错的。 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值