java程序中的各个java类属于同一类事物,描述这类事物的java类就是Class
对于这样的一个类,也有他自己的属性和方法,等等。
Java中使用字节码来将类的各种信息保存在硬盘上,当我们需要使用一个类的时候,就会加载对应类在硬盘上的字节码。
我们如何得到一个类的字节码?有3中方式:
假设:Person Person = new Person();
方式一:类.class 例如: Class clas1 = Person.class;
方式二:对象.getClass() 例如: Class clas2 = person.getClass();
方式三:Class.forName("className") 例如:Class clas3 = Class.forName("Person");
通过上面的三种方式得到了3份字节码,但是这3份字节码是相同的,也就是说
clas1==clas2==clas3
需要注意的是,Class类没有构造器,所以我们不能直接new Class();
java中有9种预定义的Class类型,分别是:
8中基本数据类型(byte、short、int、lang、float、double、boolean、char)和void
这9种预定义的类型分别也有他们自己的字节码。
得到java类的字节码以后,我们能有什么用?
我们可以通过字节码实例化这个类的一个对象
clazz.newInstance();
我们可以得的这个类的一些信息,包括类的名字,包含的属性,方法,构造器等等。
clazz.getName();
clazz.getConstructors();
clazz.getFields();
clazz.getMethods();
我们还可以判断这个类是不是数组,是不是基本类型,是不是接口等等。
clazz.isPrimitive();
clazz.isArray();
clazz.isInterface();