java反射是什么

当我们要使用某一种类时,在之前就知道它的使用方法。如果对类的方法不了解,又想要实现其功能时,我们可以借助反射来实现。这种方法在程序运行时才能知道对用的类,下面我们就反射的概念、使用场景、优点进行介绍,然后以Student类为例,在实例中体会反射神奇的用法。

1.反射概念

反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。

2.使用场景

IDE自动提示功能,对象(提示:属性、方法)

不知道类或者对象的具体信息,应该使用反射来实现。

比如类的名称放在XML文件中,属性和属性值放在XML文件中,需要在运行时读取XML文件,动态获取类的信息。

3.优点

通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,使代码更灵活,极大地提高应用的扩展性

4.实例

先写一个Student类

获取Class对象的三种方式

Object ——> getClass();

任何数据类型(包括基本数据类型)都有一个“静态”的class属性

通过Class类的静态方法:forName(String className)(常用)

Object类中的getClass方法、因为所有类都继承Object类。从而调用Object类来获取

packagefanshe;
/**
*获取Class对象的三种方式
*1Object——>getClass();
*2任何数据类型(包括基本数据类型)都有一个“静态”的class属性
*3通过Class类的静态方法:forName(StringclassName)(常用)
*
*/
publicclassFanshe{
publicstaticvoidmain(String[]args){
//第一种方式获取Class对象
Studentstu1=newStudent();//这一new产生一个Student对象,一个Class对象。
ClassstuClass=stu1.getClass();//获取Class对象
System.out.println(stuClass.getName());

//第二种方式获取Class对象
ClassstuClass2=Student.class;
System.out.println(stuClass==stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个

//第三种方式获取Class对象
try{
ClassstuClass3=Class.forName("fanshe.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名
System.out.println(stuClass3==stuClass2);//判断三种方式是否获取的是同一个Class对象
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}

}
}

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容