- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java 类型信息
Java 类型信息
获取java运行的时候的类型信息有两种方式:
一·RTTI
二·Java反射
RTTI
为什么需要RTTI
在运行时,识别一个对象的类型
列子:
当从数组中取出元素时,这种容器——实际上它将所有的事物都当作Object持有——会自动将结果转型回Shape。这是RTTI最基本的使用形式,因为在Java中,所有的类型转换都是在运行时进行正确性检查的
也正是这样要求的;您希望大部分代码尽可能少地了解对象的具体类型,而是只及对象家族中的一个通用表示打交道(在这个例子中是Shape)。这样代码会更容易写,更容易读,且更便于维护;设计也更容易实现、理解和改变。
Java反射
Class对象
Jvm的内存有一个运行时候数据区,其中有一个方法区,方法区内主要装载的是类的类型信息,jvm加载某个类得时,读取class时候 就提取class的类型信息存储到方法区中。
Class 类是java一个基础类,没装载一个新的类得时候,java虚拟机就会在java堆中,创建一个class的是实例,这个实例就代表这个class类型,通过实例获取类型信息
Method 类 的方法信息
Constructor 构造器类
Field 字段类
Java反射应用
返回一个类型引用几种方式
Class cls= Class.forName(“’)
返回一个类型
基本数据类
Class cls= Int.class 或者 Class cls= Interger.type
自定义类
Class cls= myClass.class
通过类得引用创建实例
cls.newinstace();
通过newinstace创建实例时候 需类有一个 可访问的 无参数的构造函数 一般默认的那个构造函数即可
Java反射应用
Method 类中 invoke 反射
invoke方法 对带有指定参数的指定对象调用由此 Method 对象表示的基 础方法
介绍invoke 方法的使用
public class ClassA {
public void add(Integer param1, Integer param2) {System.out.println(param1.intValue() + param2.intValue());}
public void StringAdd(String abc) {System.out.println(out + abc);}
public static void main(String[] args) {
try {
Method mth = ClassA.class.getMethod(add, new Class[] { Integer.class, Integer.class });
mth.invoke(ClassA.class.newInstance(), new Integer(1), new Integer(2));
Method mth1 = ClassA.class.getMethod(StringAdd, new Class[] { String.class });
mth1.invoke(ClassA.class.newInstance(), --test);
} catch (Exception e) {
}
}
}
-----output------
3
Out---test
Java动态代理
java.lang.reflect.Proxy
这是 Java 动态代理机制的主类,它提供了一组静态方法来为一组接口动态地生成代理类及其对象。
//该方法用于获取指定代理对象所关联的调用处理器
static InvocationHandler getInvocationHandler(Object proxy)
// 该方法用于获取关联于指定类装载器和一组接口的动态代理类的类对象
static Class getProxyClass(ClassLoader loader, Class[] interfaces)
// 该方法用于判断指定类对象是否是一个动态代理类
static boolean isProxyClass(Class cl)
// 该方法用于为指定类装载器、一组接口及调用处理器生成动态代理类实例
static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)
java.lang.reflect.InvocationHandler
这是调用处理器接口,它自定义了一个 invoke 方法,用于集中处理在动态代理类对象上
您可能关注的文档
- 金砖5国经济发展模式(BRICs economic development model in 5 countries).doc
- 金牌销售员应对不同顾客的话术(A gold medal salesman dealing with different customers).doc
- 金融专业的定义和课程及其就业方向(The definition and course of Finance and its employment direction).doc
- 金志国谈判桌上十五年(Jin Zhiguo fifteen years on the negotiating table).doc
- 金融学考点(Financial examination center).doc
- 金融学(Finance).doc
- 金融支持欠发达地区新农村建设的调查与思考(Investigation and Reflection on financial support for new rural construction in less developed areas).doc
- 金融综合化经营仍然是大势所趋(Financial integration is still the trend of the times).doc
- 金融资产的会计与税务处理差异(Differences in accounting and tax handling of financial assets).doc
- 金融(Finance).doc
最近下载
- (高清版)B-T 2099.1-2021 家用和类似用途插头插座 第1部分:通用要求.pdf VIP
- 劳动创造美好生活中职生劳动教育全套教学课件.pptx
- 人工智能在高中美术课堂中的应用.pdf
- 西藏自治区日喀则市高一入学数学分班考试真题含答案.docx VIP
- 2025黑龙江省建设投资集团有限公司面向系统内部及社会招聘12人笔试备考试题及答案解析.docx VIP
- 医院医德医风考评公示制度医德医风考评制度及考评实施细则.docx
- 晶体工程资料.pdf VIP
- 成都川师锦华小升初入学分班考试英语考试试题及答案.docx VIP
- 第六章晶体工程.ppt VIP
- ASUS华硕ROG SWIFT PG65UQ中文说明书.pdf VIP
文档评论(0)