本篇内容介绍了“Java怎么获取和使用Class对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、反射的概念
将类的各个组成部分封装成其他对象,这就是反射的机制.
我们可以通过反射获得Person类的Class对象,通过获得Class对象来获得其中的成员变量,构造方法和成员方法,这个也是我们使用反射的目的。
2、使用反射的好处
可以在程序的运行过程中操作这些对象,获得类对象的属性,方法等.
可以解耦,以此来提高程序的可扩展性
3、补充
反射:框架设计的灵魂,反射是框架设计的关键点
那么知道了反射,框架又是什么呢
框架:半成品软件,我们在开发的过程中可以在框架的基础上使用一些封装好的类进行软件开发,这样就可以简化编码了.
1、获取Class对象的方式
Class.forname(“全类名”):将字节码文件加载进内存,返回class对象
类名.class:通过类名的属性class获取
对象.getclass():因为getclass()方法在object类中定义,又因为所有类都会继承object类,所以所有类都有这种方法
2、演示上面三种获取对象的方式
Person类
public class Person {
}
Main类
public class Main {
public static void main(String[] args) throws Exception {
Class person = Class.forName("test.Person");
Class person1 = Person.class;
Person p = new Person();
Class person2 = p.getClass();
System.out.println(person);
System.out.println(person1);
System.out.println(person2);
}
}
结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的class对象都是同一个
因为所有的方法使用方式类似,在这里我就只演示获取成员变量的方法了
Person类
public class Person {
public String name;
private int age;
public String sex;
}
Main类
public class Main {
public static void main(String[] args) throws Exception {
Class person = Class.forName("test.Person");
Field[] fields = person.getFields();
System.out.println("getFields():只能获得公有的属性");
for(int i = 0;i<fields.length;i++){
System.out.println(fields[i]);
}
System.out.println("-----------------------------");
Field[] fields1 = person.getDeclaredFields();
System.out.println("getDeclaredFields():能获得所有的属性");
for(int i = 0;i<fields1.length;i++){
System.out.println(fields1[i]);
}
System.out.println("-----------------------------");
Field field = person.getField("name");
System.out.println("getField():获得单个公有属性");
System.out.println(field);
}
}
程序运行结果
getFields():只能获得公有的属性
public java.lang.String test.Person.name
public java.lang.String test.Person.sex
-----------------------------
getDeclaredFields():能获得所有的属性
public java.lang.String test.Person.name
private int test.Person.age
public java.lang.String test.Person.sex
-----------------------------
getField():获得单个公有属性
public java.lang.String test.Person.name
“Java怎么获取和使用Class对象”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。