b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c++ java Java反射机制(2)

电脑杂谈  发布时间:2018-02-16 23:04:55  来源:网络整理

Class是Reflection故事起源。针对任何您想探勘的类,唯有先为它产生一个Class 对象,接下来才能经由后者唤起为数十多个的Reflection APIs。

用中国话说:

?? ?? 就是在面向对象的java语言中,万物都是对象,接口,函数,甚至是基本数据类型,void其实都是叫Class类的实例。

?? ?? 那么如何获得这个对象呢:

有3种方法:这里拿Object obj作为示范。

1.Class c1=Object.class;//也就是类名+.class来获得,每个类都有一个隐含的静态成员

2.Class c2=obj.getClass();//实例对象的getClass()函数获得

3.Class c3=null;?? ?? c3=Class.forName(java.lang.object);//通过Class类的静态函数获得,注意带上包名

java sql_c++ java_java python

通过class获得对象的方法:Object obj=(Object)c1.newInstance();//需要有无参数的构造方法

通过这个Class类我们不仅可以完成动态编译,也可以完成对于原码各种信息的获取。

笔记:
1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载
2、new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。
3、Class.forName()通过动态加载类,可以用到一个类时,才进行加载。
【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】

java.lang.reflect.Field封装关于成员变量的操作
java.lang.reflect.Method封装关于方法的操作
java.lang.Constructor封装构造函数信息

获取方法信息:
一、基本的数据类型,void关键字等都存在类类型
Class c = 基类.class (int,String,double,void等)

二、Class类的基本API操作的
1、c.getName()//可以获取类的名称
2、c.getSimpleName();//不包含包名的类的名称
3、c.getMethods()//方法获取是该类的所有public方法,包括从父类继承的方法;
***注意【所有方法都是Method类的对象】
4、c.getDeclaredMethods()//获取的是该类自行声明的所有方法,不论访问权限

三、Method类提供了一些操作方法的方法
1、method.getReturnType()//得到该方法的返回值类型的类类型(class),如int.class String.class
2、method.getName()//得到方法的名称
3、method.getParameterTypes()//获得参数列表类型的类类型,如参数为(int,int)则得到(int.class ,int class)
eg.
Class c1 = int.class;// int的类类型Class c2 = String.class;// String类的类类型 String类字节码Class c3 = double.class; //double这个数据类类型的字节码表示方式Class = Double.class; //Double这个类的类类型字节码表示方式Class c5 = void.class; //表达了void这个类的类类型getName为这个类的类类型的具体名称 c1.getName ---> intc2.getName ---> java.lang.String 类的全称c2.getSimpleName ---> String 不包含包名的类的名称


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-81082-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...