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>
相关推荐
Joy T32 分钟前
Spring AI 接入已有 Java 项目的三种架构设计
java·人工智能·springai·ai入门·chatclient·ai service·ai能力接入
杨运交38 分钟前
[076][核心模块]构建优雅的Java异常处理框架:从错误码到全局异常处理
java·开发语言
caoerzhong1 小时前
仓库数字化成熟度分级:JeeWMS 开源 Java 仓库管理系统如何支撑从可见到自治的四级跃迁
java·开源
MayBaymax1 小时前
RocketMQ 存储机制
java·rocketmq
程序猿_极客1 小时前
【免费】分享一套优质的基于SpringBoot的服装商城管理系统的设计与实现(带可视化图表、协同过滤功能),源码+文档+视频详解(讲解)
java·spring boot·后端·服装商城管理系统
用户3721574261352 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java
zyseo82 小时前
谷歌SEO 站内搜索优化实战:把站内搜索词变成关键词金矿
java·服务器·数据库
bug菌2 小时前
🤔同事突然问我:Spring的注解 @Component 和 @Service 有何不同?
java·spring boot·后端
佳児素花痴╮2 小时前
线程知识点
java·开发语言·jvm
fundoit3 小时前
为什么需要 Access Token 和 ID Token 两个令牌
java·spring·架构·github·oauth2