温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java反射机制的精髓讲解

发布时间:2020-10-01 23:01:57 来源:脚本之家 阅读:311 作者:李灿辉 栏目:编程语言

1,什么是反射?

java的反射,允许程序在运行时,创建一个对象,获取一个类的所有相关信息等。

2,Class类

要了解反射,就绕不开Class类。

我们平时开发的类,例如ClassA,一般会有一些属性,会有几个构造方法,也会有一些普通方法,我们还可以使用ClassA来创建对象,例如ClassA classA = new ClassA()

java程序在运行时,其实是很多类的很多个对象之间的协作。jvm如何管理这些类呢?它如何知道各个类的名称,每个类都有哪些属性和哪些方法呢?

jvm会给每个类,创建一个Class类型的对象,来记录各个类的信息,包括类的名称,类有哪些属性,各个属性的类型,类有哪些方法,各个方法的名称参数列表返回值等。我们可以说ClassA是所有ClassA类型的对象的类,同理,我们也可以说,Class是所有Class类型对象的类,而Class类型的对象,也就是其他的所有的类。

3,可以获取类的哪些信息呢?

可以获取类的名称,类的构造函数,类的属性,类的普通方法等。

4,如何使用获取到的类的信息呢?

首先看一下如何使用获取到的类的方法。

jvm提供了Method类,来表示类的方法,我们获取到的一个类的方法,其实就是Method的对象。

Class获取方法的方式为,调用getMethod()方法,第一个参数为方法名称,后面是待获取的方法的参数的类型列表。

而调用获取到的方法时,也比较特殊,是调用Methodinvoke方法,第一个参数为调用哪个对象的该方法,后面是需要给该方法传递的参数列表。

Object obj = MyClass.class.newInstance();
Method method = MyClass.class.getMethod("methodName", String.class, String.class);
method.invoke(obj, "a", "b");

jvm提供了Constructor来表示类的构造方法,提供了Field来表示类的属性,其使用方法与Method的类似。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对亿速云的支持。如果你想了解更多相关内容请查看下面相关链接

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI