在构造方法里获取当前类的泛型

定义

public class MyClass<T> {

    private Class<T> clazz;

    public MyClass() {
        Type type = this.getClass().getGenericSuperclass();
        if (type instanceof ParameterizedType parameterizedType) {
            if (parameterizedType.getActualTypeArguments() != null && parameterizedType.getActualTypeArguments().length > 0) {
                this.clazz = (Class<T>) parameterizedType.getActualTypeArguments()[0];
            }
        }
    }

    public String getGenericTypeName() {
        return this.clazz.getName();
    }

}

子类

public class MyStringClass extends MyClass<String> {
}

验证

    @Test
    void test() {
        MyStringClass myClass = new MyStringClass();
        System.out.println(myClass.getGenericTypeName());
    }

输出:java.lang.String

posted @   漠孤烟  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示