Java 中 Class 和 Type 的区别

Java 中 Class 和 Type 的区别

在 Java 中,TypeClass 是两个不同的概念,尽管它们都与类型有关,但它们在用途和功能上有明显的区别。

1. Class

2. Type

区别总结

示例代码

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

public class TypeExample {
    public List<String> listField;

    public static void main(String[] args) throws NoSuchFieldException {
        // 获取 Class 对象
        Class<?> clazz = TypeExample.class;
        System.out.println("Class: " + clazz);

        // 获取字段的 Type 对象
        Field field = clazz.getDeclaredField("listField");
        Type type = field.getGenericType();
        System.out.println("Type: " + type);

        // 判断是否是参数化类型
        if (type instanceof ParameterizedType) {
            ParameterizedType pType = (ParameterizedType) type;
            Type[] actualTypeArguments = pType.getActualTypeArguments();
            for (Type actualTypeArgument : actualTypeArguments) {
                System.out.println("Actual Type Argument: " + actualTypeArgument);
            }
        }
    }
}

在这个示例中,我们首先获取了 TypeExample 类的 Class 对象,然后获取了 listField 字段的 Type 对象,并判断它是否是参数化类型。如果是,我们进一步获取了实际的类型参数。

结论