Java反射(1)

反射是一种机制,指通关获取类的变量与方法信息来创建对象,再通过这个对象来调用方法。

class对象的获取方式有三种:

1.类名.class

2.对象名.getclass()

3.class.forName("类全名")          类全名是该类所在包下的包名+类名

我们也可以用getSimpleName()方法和getName方法分别活动类名和类全名。

实际代码如下:

 

 运行出的结果意思是这三种方法都能获取相同的class类。

反射机制的目的是为了创建对象,首先我们来了解如何使用构造方法来创建对象。

查看api,我们能找到反射的的构造方法有:

1.Constructor getConstructor(Class... parameterTypes)//获取指定的单个构造方法,括号里根据是有参构造还是无参构造来按顺序填入参数类型,这种方法只能获取public修饰的方法。

2. Constructor getDeclaredConstructor(Class... parameterTypes)//获取指定的单个修饰方法,不受修饰词的影响。

3.Constructor[] getConstructors()和Constructor[] getDeclaredConstructors(),这两者返回的是一个数组,获取的是所有的对应构造方法。

 

 获取到了构造方法后,我们就可以通过构造方法后我们就可以用构造方法来创建对象了。

使用constructor的方法 newInstance(Object... initargs),括号里也是根据有参还是无参来按顺序填入参数

使用无参构造方法来创建student对象。至此,反射的机制就算是运行成功了。

除了构造方法外,构成一个类的部分还有它的成员方法和成员变量。

获取成员方法,是为了调用成员方法,要用到Method类和它的常用方法:

Method getMethod(String name,Class...args);

Method getDeclaredMethod(String name,Class...args);

Method[] getMethods();
Method[] getDeclaredMethods();

调用方法则要用到:

Object invoke(Object obj, Object... args)
    obj:调用方法所使用的对象,如果是静态方法可以传入null
    args:调用方法时传递的参数【实参】
    
void setAccessible(true) 因为被private和protected修饰的方法在通常情况下是无法被访问的,所以要设置"暴力访问"来取消权限,true取消权限,false表示不取消。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值