获取class对象的六种方式
前言:
java程序在计算机中运行有,三个主要的阶段,代码阶段/编译阶段,Class类阶段(加载阶段),runtime运行阶段。在不同的阶段我们可以通过不同的方法来获取class对象。
一 、通过Class类静态方法forName(“类包名.类名”)获取实例
此方法的前提是,已知一个类的全类名,且该类在类路径下,可通过class类的静态方法forName()获取,可能抛classnotfoundException.
class person{
String name;
}
public class Helloworld{
public static void main(String[] args) {
String allPath = "Helloworld";//"一定得是全类名(如果有包就是包名.类名)
try {
Class<?> hellowordClass = Class.forName(allPath);
System.out.println(hellowordClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
二、 使用类名.class获取
已知具体的类,通过类的class获取,该方式最为安全可靠,程序性能最高
class Person{
String name;
}
public class Helloworld{
public static void main(String[] args) {
Class personClass = Person.class;
System.out.println(personClass.getName());
}
}
三、通过对象.getclass()获取
已知某个类的实例 ,调用该实例的getclass()方法获取class对象。
class Person{
String name;
}
public class Helloworld{
public static void main(String[] args) {
Person person = new Person();
Class personClass = person.getClass();
System.out.println(personClass.getName());
}
}
四 通过类加载器获取对象
通过类加载器来获取对象,首先得获取类加载器(获取类加载器也有三种方法),再通过类加载器来获取class对象。
实例:
class Person{
String name;
}
public class Helloworld {
public static void main(String[] args) {
//获取当前线程的应用程序加载器
ClassLoader appClassLoader = Thread.currentThread().getContextClassLoader();
try {
//从类加载器中获取加载的类对象
Class personClass = appClassLoader.loadClass("Person");
System.out.println(personClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
五、基本数据类型获取class对象
//
Class<Integer> integerClass = int.class;
Class<Character> characterClass = char.class;
Class<Boolean> booleanClass = boolean.class;
System.out.println(integerClass); //int
六、基本数据类型对应的包装类通过.TYPE获取
实例:
Class<Integer> type = Integer.TYPE;
Class<Character> type1 = Character.TYPE;//其它包装类Boolean,Double,long,byte等等。
————————————————
原文链接:https://blog.youkuaiyun.com/a545__27/article/details/130919592