Class类
Java中每定义一个java class实体都会产生一个class对象。当我们编写一个类编译完成以后,在生成的.class文件中就会产生一个class对象,这个class对象用于表示这个类的类型信息。Class中没有公共的构造器,也就是说class对象不能被实例化。Class类包含的方法如下:
1、toString()
public String toString() {
return (isInterface() ? "interface" : (isPrimitive() ? "" : "class")) + getName();
}
toString方法可以将对象转换为字符串,toString()首先会判断class类型是否是接口类型,也就是说普通类和接口都能用class对象来表示,然后再判断是否是基本数据类型,这里判断的都是基本的数据类型和包装类,还有void类型。所有的类型如下:
- java.lang.Boolean:代表boolean数据类型的包装类
- java.lang.Character:代表char数据类型的包装类
- java.lang.Byte:代表byte数据类型的包装类
- java.lang.Short:代表short数据类型的包装类
- java.lang.Integer:代表int数据类型的包装类
- java.lang.Long:代表long数据类型的包装类
- java.lang.Float:代表float数据类型的包装类
- java.lang.Double:代表double数据类型的包装类
- java.lang.Void:代表void数据类型的包装类
然后是getName()方法,这个方法返回类的全限定名称:
- 如果是引用类型,比如String.class.getName()—》java.lang.String
- 如果是基本数据类型,比如byte.class.getName()—》byte
- 如果是数组类型,比如new Object[3].getClass.getName()—》java.lang.Object
2、toGenericString()
这个方法会返回类的全限定名称,而且包括类的修饰符合类型参数信息。
3、forName()
根据类名获得一个Class对象的引用,这个方法会使类对象进行初始化。
例如 Class t = Class.forName("java.lang.Thread");能够初始化一个Thread线程对象。在java中,一共有三种获取实例的方式:
- Class.forName("java.lang.Thread")
- Thread.Class
- Thread.getClass()
4、newInstance()
创建一个类的实例,代表着这个类的对象。forName()方法对类进行初始化,newInstance方法对类进行实例化。
5、getClassLoader()
获取类加载器对象。
6、getTypeParameters()
按照声明的顺序获取对象的参数类型信息。
7、getPackage()
返回类的包
8、getInterfaces()
获得当前类实现的类或接口,可能是多个,所以返回的是Class数组。
9、Cast
把对象转换成代表类或是接口的对象
10、asSubclass(Class clazz)
把传递的类的对象转换成代表其子类的对象
11、getClasses()
返回一个数组,数组中包含该类中所有公共类和接口类的对象
12、getDeclaredClasses()
返回一个数组,数组中包含该类中所有类和接口类的对象
13、getSimpleName()
获得类的名字
14、getFields()
获得所有公有的属性对象
15、getField(String name)
获得某个公有的属性对象
16、getDeclaredField(String name)
获得某个属性对象
17、getDeclaredFields()
获得所有属性对象
18、getAnnotation(Class annotationClass)
返回该类中与参数类型匹配的公有注解对象
19、getAnnotations()
返回该类所有的公有注解对象
20、getDeclaredAnnotation(Class annotationClass)
返回该类中与参数类型匹配的所有注解对象
21、getDeclaredAnnotations()
返回该类所有的注解对象
22、getConstructor(Class...<?> parameterTypes)
获得该类中与参数类型匹配的公有构造方法
23、getConstructors)
获得该类的所有公有构造方法
24、getDeclaredConstructor(Class...<?>parameterTypes)
获得该类中与参数类型匹配的构造方法
25、getDeclaredConstructors()
获得该类所有构造方法
26、getMethod(String name,Class...<?>parameterTypes)
获得该类某个公有的方法
27、getMethods()
获得该类所有公有的方法