获取类对象的方法

获取class对象的六种方式

前言:

java程序在计算机中运行有,三个主要的阶段,代码阶段/编译阶段,Class类阶段(加载阶段),runtime运行阶段。在不同的阶段我们可以通过不同的方法来获取class对象。
获取类对象的方法_第1张图片

一 、通过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();
        }
    }
}

获取类对象的方法_第2张图片

二、 使用类名.class获取

已知具体的类,通过类的class获取,该方式最为安全可靠,程序性能最高

class   Person{
    String name;
}
public class Helloworld{
    public static void main(String[] args) {
        Class personClass = Person.class;
        System.out.println(personClass.getName());
    }
}

获取类对象的方法_第3张图片

三、通过对象.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.csdn.net/a545__27/article/details/130919592

你可能感兴趣的:(JavaSE,java,类对象,java基础,类加载器)