反射机制----Class
2015-10-27 17:45
330 查看
1.反射其实是一种反编译的过程,他通过Class来寻回原java的内容,实现了对java文件原代码的直接操作,很好的补充了java动态性不足的特点,他可以在程序运行时,调用java文件的方法,变量,构造器等属性,完成动态引入过程,当然他也大大提高了java语言编写大型程序结构明了的优势,可以通过配置文件进行类的加载。
<1>.Class的简单介绍:
Class类的常用方法:
static Class<?> forName(className);返回与带有给定字符串类名相关联的接口或类的对象。
T newInstance():创建此Class类所表示的一个新实例
得到Class实例(即得到对应类的字节码文件)的三种方法:
<1>.Class<T> c = 类名.class
<2>. Class<T> c = 类的实例.getClass();
<3>.Class<T> c = Class.forName(“类名”);
得到一个类其继承的类的信息:
Class<?> c = 类名.class;
Class<?> cParent = c.getSuperClass();
得到一个类其实现类的信息:
Class<?> cInterface = c.getInterface();
getName();得到类的完整名字.
getFields();得到类的public类型的属性.
getDeclaredField();得到类的所有属性。
getMethods();得到类的public类型的方法.
getDeclaredMethods();获得类的所有方法.
getMethod(String name,Class<?> type);获得类的特定方法,name指定方法的名字。Type指定方法参数的类型。
getConstructors();获得类的public类型的构造方法
getConstructor(Class[] types);获得类的特定构造方法,types参数指定构造方法的参数类型
getSuperclass();返回此Class的超类的Class
getInterfaces();返回此对象所表示的类或接口所实现的接口
<1>.Class的简单介绍:
Class可以看做类的代码本身。Object类的getClass()方法将返回对象对应的Class类实例。
Class类的常用方法:
static Class<?> forName(className);返回与带有给定字符串类名相关联的接口或类的对象。
T newInstance():创建此Class类所表示的一个新实例
得到Class实例(即得到对应类的字节码文件)的三种方法:
<1>.Class<T> c = 类名.class
<2>. Class<T> c = 类的实例.getClass();
<3>.Class<T> c = Class.forName(“类名”);
得到一个类其继承的类的信息:
Class<?> c = 类名.class;
Class<?> cParent = c.getSuperClass();
得到一个类其实现类的信息:
Class<?> cInterface = c.getInterface();
getName();得到类的完整名字.
getFields();得到类的public类型的属性.
getDeclaredField();得到类的所有属性。
getMethods();得到类的public类型的方法.
getDeclaredMethods();获得类的所有方法.
getMethod(String name,Class<?> type);获得类的特定方法,name指定方法的名字。Type指定方法参数的类型。
getConstructors();获得类的public类型的构造方法
getConstructor(Class[] types);获得类的特定构造方法,types参数指定构造方法的参数类型
getSuperclass();返回此Class的超类的Class
getInterfaces();返回此对象所表示的类或接口所实现的接口
相关文章推荐
- Android开发,仿苹果的弹出窗口界面、以及窗口动画效果、窗口圆角实现。
- Sql查询的坑
- Web服务器集群搭建
- Undefined symbols for architecture i386: "_OBJC_CLASS_$_AVOSCloud", referenced from:
- C#学习(6):DataSet构建EasyUI树结构
- startssl,免费的ssl证书申请及注意事项
- JAVA的Random类(转)--几率的实现
- vs2010 小Tip
- Oralce定时执行procedure
- EXT.NET年月季筛选条件
- 学习iOS必须知道的[转载]
- FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和XmlWebApplicationContext简介
- 运行百度语音识别官方iOS demo,无法离线识别解决办法
- 1040 As Easy As A+B【排序】
- Ubuntu14.04更新Kernel和Nvidia/Cuda驱动不兼容卡在启动画面的故障排除
- 托福写作方式独立写和改写
- Android PackageManagerService流程详细分析(一)之启动
- 深入解析Go语言的io.ioutil标准库使用
- Spring +Mybatis +oracle 实现数据库分页
- 第五章