java继承后获取泛型类的class并实例化

复制代码
public class Super <T, W> {
    
    T newT() throws IllegalAccessException, InstantiationException {
        final Class<T> classT = this.getClassT();
        return classT.newInstance();
    }

    protected Class<T> getClassT() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType) type;
        // 如果想获取W的class对象这里用1
        Type typeArg = parameterizedType.getActualTypeArguments()[0];
        return (Class<T>) typeArg;
    }
}

public class Sub extends Super<BeanAbc, String> {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        Sub sub = new Sub();
        final BeanAbc beanAbc = sub.newT();
        System.out.println(beanAbc);
    }

}

public class BeanAbc {

    private Integer id;
    private String name;

    public BeanAbc() {
        this.id = 1;
        this.name = "ddd";
    }
}

输出:

BeanAbc(id=1, name=ddd)

主要用途:当某些对象的处理逻辑相似的时候,可以使用泛型类将不同的地方抽取出来,这样只要创建多个子类,就可以实现多种不同的业务逻辑。该功能是从mp的思路中学习的。

mybatis plus有个非常实用的类:

复制代码
public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T>
相关推荐
Jelena157795857926 分钟前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
神明不懂浪漫1 小时前
【第五章】Java中的继承与多态
java·开发语言
AI多Agent协作实战派3 小时前
AI多Agent协作系统实战(十七):凌晨4点,我的AI系统在“假装工作“——3个bug同时爆炸的5小时
java·前端·bug
gaolei_eit3 小时前
Java+Ai+vue
java·spring·maven
qq_2518364573 小时前
基于java Web 动漫视频网站毕业论文
java·开发语言·前端
LayZhangStrive3 小时前
JUC相关的函数、注解、变量杂记
java·面试·多线程·juc
未秃头的程序猿3 小时前
给公司做了个AI客服Agent,用的Spring AI 1.0,3天上线领导拍板了
java·后端·ai编程
曹牧4 小时前
Eclipse 批量文本替换
java·ide·eclipse
程序员清风4 小时前
OpenAI官方发布最新提示词技巧!
java·后端·面试
一只枫林4 小时前
MySQL内、外连接知识点汇总
java·前端·数据库