泛型类的继承

//使用泛型化的Dao接口
public interface IBaseDao<T>{

public void save(T t);

public List<T> getAll();
...
}

//实现类XXBaseDaoImpl在实现IBaseDao<T>时,也需要提供泛型化的参数T
public class UserDaoImpl<User> implements IBaseDao<User>{

public void save(User t);

public List<User> getAll();

...
}


其实这样还看不出好处,如果有AbstractBaseDao则能看出


public interface IBaseDao<T>{
public void save(T t);
public List<T> getAll();
...
}
public abstract class AbstractBaseDao<T> implements IBaseDao<T>{
public void save(T t){
...
}
public List<T> getAll(){
...
}
...
}

则实现类什么都不写即可,
public class UserDaoImpl extends AbstractBaseDao<User>{

}

public class OrderDaoImpl extends AbstractBaseDao<Order>{

}

业务层接口也可以采用类似dao的写法:
public interface IBaseService<T>{
   public void save(T t);

   public List<T> getAll();
}

//业务层实现类采用Base<U,T extends BaseModel>的形式
public class BaseServiceImpl<E, D extends IBaseDao<E>> implements IBaseService<E> {
    //Dao接口变量,
    protected D dao;

    public void save(E e){
        ...
    }

  
    public List<E> getAll(){
          ....
    }
    //对dao接口变量进行setter和getter设置
   public void setDao(D dao) {
     this.dao = dao;
   }

   public D getDao() {
     return dao;
   }
}
public class Base<U,T extends BaseModel>还有这种用法
要求泛型T必须extends BaseModel


@Inherited的作用
@Inherited:允许子类继承父类的注解
http://zy19982004.iteye.com/blog/1979520

猜你喜欢

转载自rd-030.iteye.com/blog/1870127