Class
类的讲解。
对于每一个类而言,JRE 都为其保留了一个不变的 Class
类型的对象。一个 Class
对象包含了特定某个结构 (class/interface/enum/annotation/primitive type/void/[]
)的有关信息。
Class
本身也是一个类Class
对象只能由系统创建对象- 一个加载的类在
JVM
中只会有一个Class
实例 - 一个
Class
对象对应的是一个加载到JVM
中的一个.class
文件 - 每一个类的实例都会记得自己是由哪个
Class
实例所生成 - 通过
Class
可以完整的得到一个类的所有被加载的结构 Class
类是Reflection
的根源,针对任何你想同台加载、运行的类,唯有先获得对应的Class
对象
Class 类的常用方法
方法名 | 功能说明 |
---|---|
static ClassforName(String name) | 返回指定类名 name 的 Class 对象 |
Object newInstance() | 调用缺省构造函数,返回 Class 对象的一个实例 |
getName() | 返回此 Class 对象所表示的实体 (类、接口、数组类或 void) 的名称 |
Class getSuperClass() | 返回当前 Class 对象的父类的 Class 对象 |
Class[] getinterfaces() | 获取当前 Class 对象的接口 |
ClassLoader getClassLoader() | 返回该类的类加载器 |
Constructor[] getConstructors() | 返回一个包含某些 Constructor 对象的数组 |
Method getMethod(String name,Class.. T) | 返回一个 Method 对象,此对象的形参类型为 paramType |
Field[] getDeclaredFields() | 返回 Field 对象的一个数组 |
InputStream getResourceAsStream(String name) | 返回输入流 用法 - java - Properties |
获取 Class 类的实例
获取已知的具体的类,通过类的
class
属性获取,此方法最安全可靠,性能最高Class person = Person.class;
已知某一个类的实例,通过调用该实例的
getClass()
方法获取Class
对象Class person = person.getClass();
已知一个类的全类名,且该类在类路径下,通过获取
Class
类的静态方法forName()
获取,可能抛除ClassNotFoundException
Class person = Class.forName("path")
内置基本数据类型可以直接
类名.Type
还可以用
ClassLoader
1 | package com.redisc; |
哪些类型可以有 Class 对象
class
: 外部类,成员(成员内部类、静态内部类)、局部内部类、匿名内部类interface
: 接口[]
:数组enum
:枚举annotation
: 注解@interface
primitive type
: 基本数据类型void
1 | public class Test { |