Java|Java面试问答——反射原理( 二 )
在没有对象实例的时候 , 主要有两种办法 。
//获得类类型的两种方式
Class cls1 = Role.class;
Class cls2 = Class.forName(\"yui.Role\");
注意第二种方式中 , forName中的参数一定是完整的类名(包名+类名) , 并且这个方法需要捕获异常 。 现在得到cls1就可以创建一个Role类的实例了 , 利用Class的newInstance方法相当于调用类的默认的构造器 。
Object o = cls1.newInstance();
//创建一个实例
//Object o1 = new Role(); //与上面的方法等价
二.常用方法1.isPrimitive(判断是否是基本类型的字节码)
输出结果
2.getConstructor和getConstructors()
java中构造方法没有先后顺序 , 通过类型和参数个数区分 。
3.Filed类代表某一类中的一个成员变量 。
三.典型例题1.将所有String类型的成员变量里的b改成a 。
2.写一个程序根据用户提供的类名 , 调用该类的里的main方法 。
为什么要用反射的方式呢?
3.模拟
instanceof
操作符
在这个例子中创建了一个S 类的 Class 对象 , 然后检查一些对象是否是S的实例 。 Integer(37) 不是 , 但 new S()是 。
四.Method类
代表类(不是对象)中的某一方法 。
五.数组的反射Array工具类用于完成数组的反射操作 。
同类型同纬度有相同的字节码 。
int.class和Integer.class不是同一份字节码 , Integer.TYPE , TYPE代表包装类对应的基本类的字节码 int.class==Integer.TYPE 。
六.结束语以上就是反射机制的简单的使用 , 显然学过spring的朋友一定明白了 , 为什么可以通过配置文件就可以让我们获得指定的方法和变量 , 在我们创建对象的时候都是通过传进string实现的 , 就好像你需要什么 , 我们去为你生产 , 还有我们一直在用Object这就说明java语言的动态特性 , 依赖性大大的降低了 。
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 学习大数据是否需要学习JavaEE
- 从事Java开发时发现基础差,是否应该选择辞职自学一段时间
- 谁能打败 Siri
- 2021年Java和Python的应用趋势会有什么变化?
- 普通大学计算机专业的本科生,该选择主攻前端还是Java
- 机情问答:小米11有哪些升级?三星廉价折叠手机来了?
- Java语言会不会随着容器的兴起而衰落
- 机情问答:小米11这次有几款?荣耀V40真长这样?