class类的以及class对象的介绍以及反射介绍

一、概述

1.反射概述:解剖class对象的一个技术

2.问题:能解剖class对象的啥呢?
   a.解剖出成员变量 : 赋值
   b.解剖出成员方法: 调用
   c.解剖出构造方法: new对象

3.用反射的好处:让代码变的更通用,更灵活

4.问题:反射最开始的一步是干啥?
   获取Class对象

5.class对象:class文件对应的对象
  class类:描述class对象的类叫做class类

二、获取Class对象

1.方式1:调用Object中的getClass方法:
  Class <?> getClass()       开发中最常用,因为方便
2.方式2:不管是基本类型还是引用类型,jvm都为其提供了一个静态成员:class

3.方式3:Class类中的静态方法:
   static Class<?> forName(String className)  
                           className:传递的是类的全限定名(包名.类名)   最通用

三、获取Class对象中的构造方法

1.Class类中的方法:
  Constructor<?>[] getConstructors()  -> 获取所有public的构造

2.Class类中的方法:
  Constructor<T> getConstructor(Class<?>... parameterTypes)->获取指定的public的构造
                                parameterTypes:可变参数,可以传递0个或者多个参数
  a.如果获取的是空参构造:参数不用写
  b.如果获取的是有参构造:参数写参数类型的class对象    
      
3.Constructor类中的方法:
  T newInstance(Object...initargs) -> 创建对象
                         initargs:传递的是构造方法的实参
  a.如果根据无参构造new对象,initargs不写了
  b.如果根据有参构造new对象,initargs传递实参   

四、利用空参构造创建对象的快捷方式_public

Class类中的方法:
  T newInstance() -> 根据空参构造创建对象
      
前提:被反射的类中必须有public的空参构造  

五、利用反射获取有参构造并创建对象_public

1.Class类中的方法: Constructor<T> getConstructor(Class<?>... parameterTypes)->获取指定的public的构造 parameterTypes:可变参数,可以传递0个或者多个参数 
a.如果获取的是空参构造:参数不用写 
b.如果获取的是有参构造:参数写参数类型的class对象     
2.Constructor类中的方法:
 T newInstance(Object...initargs) -> 创建对象 
 initargs:传递的是构造方法的实参 
a.如果根据无参构造new对象,initargs不写了 
b.如果根据有参构造new对象,initargs传递实参    

六、利用反射获取私有构造(暴力反射)

1.Constructor<?>[] getDeclaredConstructors()获取所有构造方法,包括private  
2.Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)  -> 获取指定构造,包括private   
  parameterTypes:参数类型的class对象  
      
      
3.Constructor有一个父类叫做AccessibleObject ,里面有一个方法
  void setAccessible(boolean flag)  -> 修改访问权限
                     flag为true:解除私有权限

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值