学习笔记,使用泛型T,来构建工厂类DAO

本文探讨了使用HBase存储数据时,如何通过泛型技术创建通用DAO工厂的方法。作者尝试了不同的实现方式,并分享了从中学到的经验教训。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记:  最近项目上使用hbase来存储数据,实体对象的存储大部分代码都是一样的,所以想写一个公用的dao来实现传入不同的实体对象,生成对应的dao工厂.但苦与技术能力不足,写出来的dao工厂不美观,犹如hibernate的读写操作,需要每次传入实体对象class.才能进行操作.希望能有大神来指点一二.不过在不断改进中,也学习到了一些东西.

我现在的代码:

//这里是接口类
interface dao {
    public <T> T find();
}
//这里是实现dao,方法都使用泛型来定义,参数都需要传入具体的实体对象class
class daoImpl implements dao{
    public <T> T find(Class<T> type);
}


这样感觉很不好(不知道为什么,就是感觉不好),不过代码是真的少.哈哈...

改版的就如同hibernate差不多

//接口,定义泛型
interface dao<T> {

}
class daoImpl<T> implements dao<T> {
    private Class<T> type;

    @SuppressWarnings("unchecked")
    public Test2() {
      //getClass().getGenericSuperclass() 得到 当前对象的直接超类的 Type
      ParameterizedType parameterizedType = (ParameterizedType) getClass()
          .getGenericSuperclass();
      this.type = (Class<T>) parameterizedType.getActualTypeArguments()[0];
      System.out.println(getClass().getGenericSuperclass());
    }
  }

然后每个实体对象都需要写一个dao工厂类来继承daoImpl

//这里就需要实例化泛型对象了,这样调用daoImpl无参构造方法时,才能获取到泛型的真实类型
class myDao extends daoImpl<Entity> {
    
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值