Java 通过 Class 的 getName 、getSimpleName、getCanonicalName 获取类名


#Java 反射、泛型与注解#


速查

getName getSimpleName getCanonicalName
UserInfo com.example.TestJava$UserInfo UserInfo com.example.TestJava.UserInfo
UserInfo[] [Lcom.example.TestJava$UserInfo; UserInfo[] com.example.TestJava.UserInfo[]
ArrayList<UserInfo> java.util.ArrayList ArrayList java.util.ArrayList
Class java.lang.Class Class java.lang.Class
Class[] [Ljava.lang.Class; Class[] java.lang.Class[]
ArrayList<Class> java.util.ArrayList ArrayList java.util.ArrayList

示例

POJO 类

package com.example;

import lombok.Data;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

public class TestJava {

    @Data
    public static class UserInfo {
        private String name;
    }

    @Test
    public void test_getName() {
        System.out.println(UserInfo.class.getName());
        // 输出 com.example.TestJava$UserInfo
        System.out.println(UserInfo.class.getSimpleName());
        // 输出 UserInfo
        System.out.println(UserInfo.class.getCanonicalName());
        // 输出 com.example.TestJava.UserInfo
    }


    @Test
    public void test_array_getName() {
        UserInfo[] userInfoArr = new UserInfo[10];
        System.out.println(userInfoArr.getClass().getName());
        // 输出 [Lcom.example.TestJava$UserInfo;
        System.out.println(userInfoArr.getClass().getSimpleName());
        // 输出 UserInfo[]
        System.out.println(userInfoArr.getClass().getCanonicalName());
        // 输出 com.example.TestJava.UserInfo[]
    }


    @Test
    public void test_list_getName() {
        List<UserInfo> userInfoList = new ArrayList<>();

        System.out.println(userInfoList.getClass().getName());
        // 输出 java.util.ArrayList
        System.out.println(userInfoList.getClass().getSimpleName());
        // 输出 ArrayList
        System.out.println(userInfoList.getClass().getCanonicalName());
        // 输出 java.util.ArrayList
    }
    
}

接口

package com.example;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

public class TestJava {

    public static interface UserInfo {

    }

    @Test
    public void test_getName() {
        System.out.println(UserInfo.class.getName());
        // 输出 com.example.TestJava$UserInfo
        System.out.println(UserInfo.class.getSimpleName());
        // 输出 UserInfo
        System.out.println(UserInfo.class.getCanonicalName());
        // 输出 com.example.TestJava.UserInfo
    }


    @Test
    public void test_array_getName() {
        UserInfo[] userInfoArr = new UserInfo[10];
        System.out.println(userInfoArr.getClass().getName());
        // 输出 [Lcom.example.TestJava$UserInfo;
        System.out.println(userInfoArr.getClass().getSimpleName());
        // 输出 UserInfo[]
        System.out.println(userInfoArr.getClass().getCanonicalName());
        // 输出 com.example.TestJava.UserInfo[]
    }


    @Test
    public void test_list_getName() {
        List<UserInfo> userInfoList = new ArrayList<>();

        System.out.println(userInfoList.getClass().getName());
        // 输出 java.util.ArrayList
        System.out.println(userInfoList.getClass().getSimpleName());
        // 输出 ArrayList
        System.out.println(userInfoList.getClass().getCanonicalName());
        // 输出 java.util.ArrayList
    }

}

Class 本身

package com.example;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

public class TestJava {

    @Test
    public void test_getName() {
        System.out.println(Class.class.getName());
        
        // 输出 java.lang.Class
        System.out.println(Class.class.getSimpleName());
        // 输出 Class
        System.out.println(Class.class.getCanonicalName());
        // 输出 java.lang.Class
    }


    @Test
    public void test_array_getName() {
        Class[] classArr = new Class[10];

        System.out.println(classArr.getClass().getName());
        // 输出 [Ljava.lang.Class;
        System.out.println(classArr.getClass().getSimpleName());
        // 输出 Class[]
        System.out.println(classArr.getClass().getCanonicalName());
        // 输出 java.lang.Class[]
    }


    @Test
    public void test_list_getName() {
        List<Class> classList = new ArrayList<>();

        System.out.println(classList.getClass().getName());
        // 输出 java.util.ArrayList
        System.out.println(classList.getClass().getSimpleName());
        // 输出 ArrayList
        System.out.println(classList.getClass().getCanonicalName());
        // 输出 java.util.ArrayList
    }

}

( 本文完 )