Java反转机制

Posted churujianghudezai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java反转机制相关的知识,希望对你有一定的参考价值。

什么是反射:

Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。

所谓反射其实就是获取类的字节码文件,也就是.class文件,我们可以通过Class这个对象进行获取。

三种方式获取class对象的方式:

  1. 对象.getclass()
Iphone iph = new Iphone();
Class cls = iphone.getClass();

  2. 类.Class()

Class cls = Iphone.class;

  3. Class.forName(“包名.类名”)

Class cls = Class.forName(“com.lalala.Iphone”);

在以上的三种方法中:

方法1,已经创建了Iphone对象,这个时候就不需要去进行反射了,显得有点多此一举;

方法2,需要导入Iphone类的包,依赖性太强了;

方法3中的Class类继承自Object类,故可以直接使用,且实参为字符串,即使com.lalala包中的Iphone类不存在,该方法在不运行时也不会报错,所以我们一般选用方法三!

 

通过class对象动态创建目标对象:         

Iphone iph2 = (Iphone)clz.newInstance();//java9之前的方法,不安全
Iphone iph3 = (Iphone)clz.getConstructor().newInstance(若构造器有参数,该处要填参数);//Java9推荐该方法

 

 此外还可以通过class对象查看目标类有哪些方法和属性。

以上是关于Java反转机制的主要内容,如果未能解决你的问题,请参考以下文章

反射机制依赖注入控制反转

Java中如何实现字符串反转?

反转链表

Spring进阶之路-Spring核心机制:依赖注入/控制反转

Java之反转排序

Linux同步机制 - 基本概念(死锁,活锁,饿死,优先级反转,护航现象)