Class类(反射技术)

研究反射技术就是研究Class类里面的API  ,通过Class可以了解类的方方面面的信息

没有Class cls1=new Class(); //没有这个构造方法

Class  cls1=字节码1;

Class cls2=字节码2;

Class 就是内存中的字节码--->然后字节码再搞出对象

Date.class;

p1.getClass();        对象.getClass;    //字节码已经加载起来

Class.forName("java.lang.String")    //1.字节码还没有加载,用类加载器把这份字节码加载进来,放到缓存中去,同时方法返回加载的字节码

                                                                 //2. 字节码已经加载起来


即二进制代码-----字节码-------对象

基本的 Java 类型(booleanbytecharshortintlongfloat 和 double)和关键字 void也表示为 Class 对象。九个特殊对象

如: int.class    void.class

Class.isPrimitive() 是不是基本类型?即上面那个

注意:Integer 是包装类,不同于int,各有各的类型

System.out.println(int.class==Integer.class);  false

System.out.println(int.class==Integer.TYPE); true  Integer.TYPE表示包装类包装的基本类型的字节码

数组也是一种类型

System.out.println(int[].class==Integer.TYPE);   false


int.class , Integer.class , intp[].class


反射就是把Java类的各种成分映射成相应的Java类。

成员变量

方法

-- 构造方法 Constructor 代表字节码里面的构造方法  

Constructor[]    getConstructors();得到所有构造方法

Constructor  getConstructor(Object.class<参数类型>,...,...);  得到单独的构造方法

newInstance()
          创建此 Class 对象所表示的类的一个新实例

Construct construct=Class.forName("java.lang.String").getConstrucot(参数类型) (StringBuffer.class);

String obj=constructor.newInstance(new StringBuffer("abc")); //编译报错,是不知道你的类型的Constructor  它现在是不知道的

String obj=(String)constructor.newInstance(new StringBuffer("abc"));

--  包

getPackage()  获取此类的包

 

--  变量

Field  getField(String name)
          返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
Field[  ]  getFields()
          返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。

Object    Field.get(  .class);        get(Object obj)   返回指定对象上此Field 表示的字段的值。

ReflectPoint point=new ReflectPoint(1,7);

Field y=poitnt..getClass().getField("y");

System.out.println(y.get("point");

 

注意:如果是私有变量的话

Field getDeclaredField(String name)
          返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段

field.setAccessible(true);   设置可见

 

-- 方法

Method getMethod(String name, Class<?>... parameterTypes)
          返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
 Method[] getMethods()
          返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值