首页 / JAVA / 初识java反射机制
初识java反射机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了初识java反射机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2455字,纯文字阅读大概需要4分钟。
内容图文
![初识java反射机制](/upload/InfoBanner/zyjiaocheng/792/419b03f7921c48eaaf06d64b7bf13d47.jpg)
这篇小博客有这么些内容~认识何使用java反射机制的心路历程
什么是java反射机制呢?什么时候会用到java反射机制呢?怎么使用java反射机制呢?
那我们开始吧~
(一)反射机制(Reflection)
JAVA反射机制_百度百科(你不打算戳戳看吗?)
java反射机制让Java这个静态语言变得格外突出,反射机制可以让java在运行过程中动态的调用类里面的属性和方法,可以动态的调用对象的方法。
*在度娘解释里动态语言和静态语言这两个词瞩目
所以静态语言和动态语言的区别 - raindi - 博客园。
静态在编译的时候一个变量的类型由它的定义决定,而动态语言实在于运行时可以根据上下文来确定变量的类型
(二)为什么要用反射机制呢?
反射机制可以让java在运行的时候获得某个类的结构、成员变量,用来实例化。Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。这种自审机制就像用eclipse的时候--对象.XXX的时候编译工具会跳出这个对象对应的的属性和方法,就是自审机制。nice
(三)怎么使用java反射机制呢?
1.Class类
什么是Class类呢?
在java语言里,类是java.lang.Class的实例化对象(Class大写C),那么就可以说我创建一个对象比如学生就是Class类的对象,“学生”本身也是类。
2.反射
现在想用java的反射机制来访问“学生”类我可以这样声明
public class Domo {
public void f() {
//声明学生对象1
Student ni = new Student();
//声明学生对象2
Class a = Student.class;//也就是每一个对象都有一个class属性
//声明学生对象3
Class b = ni.getClass();//通过已知对象来获得对应的类;
//声明学生对象4
try {
Class c3 = Class.forName("one.Student");//找到类的路径
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
这里的abc都是类都表示了Student的类类型,那么abc是否相等呢?
实践输出“a==b”返回值是true可见一个类只能是一个Class的实例对象。
-----1通过http://a.b.cc创建实例化对象
通过a,b,c的newInstance来创
try {
Student a1 =(Student)a.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
-----2调用对象的方法
通过调用对象的方法,方法其实也是实例化对象,它是Method的实例化对象。
Method[] ms = c.getMethods();//获得类里面的方法;
for(int i = 0; i < ms.length;i++){
//然后可以得到方法的名称
System.out.print(ms[i].getName()+" ");
}
获得对象的参数,和获得方法一样,属性也有它的类-》Field
Field[] fs = c.getDeclaredFields();//可以这样获得方法,这里的方法不管是私有还是共有都可以获取
-----3对象的构造函数
同理构造函数也有它的类-》Constructor
Constructor[] cs = c.getDeclaredConstructor;//获取它的全部构造函数
谈谈Java反射机制~我有认真看他的博客
内容总结
以上是互联网集市为您收集整理的初识java反射机制全部内容,希望文章能够帮你解决初识java反射机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。