您的位置:首页 > 编程语言 > Java开发

Java编程思想-14类型信息

2017-05-11 01:24 465 查看

一、Class对象

1、代表着该类的类型信息,被保存到同名.class文件中。

2、当类第一次被使用时,JVM会加载类,自动创建类的Class对象。

3、使用".class"创建Class对象的引用时,不会自动初始化该Class对象

4、与instanceof有一定的等价性

5、动态instanceof:Class.isInstance()

二、反射

与正常机制无本质上的区别,只不过反射机制是在运行时,才获取.class文件

1、java.lang.Class

//获取类类型
Class c;
c = String.Class;			//通过类
c = "".getClass();			//通过对象
c = Class.forName("java.lang.String");	//通过类名

//创建对象
Class<?> clazz;
Constructor<?> cotor;
clazz.newInstance();			//通过类类型创建
cotor.newInstance(Object...);		//通过构造器创建

//获取构造器
getConstructors():			所有公共构造器
getConstructor(Class<?>...):		对应公共构造器
getDeclaredConstructors():		所有构造器(包括私有)
getDeclaredConstructor(Class<?>...):	对应构造器(包括私有)

//获取属性
getFields():				所有公共属性
getField(String):			对应公共属性
getDeclaredFields():			所有属性(包括私有)
getDeclaredField(String)		对应属性(包括私有)

//获取方法
getMethods():				所有公共方法
getMethod(String, Class<?>...):	对应公共方法
getDeclaredMethods():			所有方法(包括私有)
getDeclaredMethod(String, Class<?>...):对应方法(包括私有)

2、java.lang.reflect.Constructor

getName():				获取构造器名称
newInstance(Object...):		创建对象
setAccessible(boolean):		设为ture,则可访问私有

3、java.lang.reflect.Field

getName():				获取属性名称
get(Object):				获取属性的值(指定对象)
set(Object, Object):			设置属性的值(指定对象)
setAccessible(boolean):		设为ture,则可访问私有

4、java.lang.reflect.Method

getName():				获取方法名称
invoke(Object, Object...):		调用方法(指定对象)
setAccessible(boolean):		设为ture,则可访问私有


三、动态代理

待续...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: