- 类名.class
类名.class属于Java的Class字面量,它表示对应类的类类型(Class对象)。使用该字面量可以获取类的Class对象,进而通过反射获取类的信息。以下为示例代码:
public class Person {
private String name;
public void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
public class Test {
public static void main(String[] args) {
Class<Person> personClass = Person.class;
System.out.println(personClass.getName()); //输出:Person
}
}
- Class.forName()
Class.forName()方法是Java中常用的获取类类型的方法之一。该方法的参数是一个字符串类型的类名,当虚拟机中没有该类类型时,会尝试加载该类。以下为示例代码:
public class Test {
public static void main(String[] args) throws Exception {
Class<?> personClass = Class.forName("Person");
System.out.println(personClass.getName()); //输出:Person
}
}
需要注意的是,Class.forName()方法不仅可以加载类,还可以执行类加载器中的静态代码块,因此使用该方法时一定要注意类加载的顺序。
- getClass()
getClass()方法属于Object类中的方法,它可以返回某个实例对象所属的类的Class对象。以下为示例代码:
public class Person {
private String name;
public void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
Class<? extends Person> personClass = person.getClass();
System.out.println(personClass.getName()); //输出:Person
}
}
需要注意的是,getClass()方法只能获取到运行时对象的类类型。如果运行时类型与声明类型不一致,该方法返回的是运行时类型。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java中类名.class, class.forName(), getClass()的区别 - Python技术站