1 、Object类支持:
class Person{
}
public class ClassTest {
public static void main(String[] args) {
//Object类提供
Class cls = Person.class ;
System.out.println("1、" + cls.getName()) ; //获取完整类名称
}
}
2、JVM直接支持:
class Person{
}
public class ClassTest {
public static void main(String[] args) {
//JVM直接支持
Person per = new Person() ; //需要先进行实例化,意义不大
Class cls0 = per.getClass() ;
System.out.println("2、" + cls0.getName());
}
}
缺点:如果现在只想获得 Class 类对象,则必须产生指定类对象后才可以获得
3、Class类支持:
class Person{
}
public class ClassTest {
public static void main(String[] args) throws ClassNotFoundException {
//Class类支持
Class cls1 = Class.forName("Person") ; //找不到抛出ClassNotFoundException异常
System.out.println("3、" + cls1.getName());
}
}
这种模式最大的特点是可以直接采用字符串的形式定义要使用的类型,并且程序中不需要编写任何的 import 语句。要使用的程序类不存在则会抛出 “ java . lang . ClassNotFoundException ” 异常。
反射之中所有的核心操作都是通过 Class 类对象展开的,Class 类是反射操作的根源所在,但是这个类如果要想获取它的实例化对象,可以采用以上三种方式完成。