想写一个abstract BaseDao让所有的Dao继承。
里面写了一个函数 public abstract void add(BaseEntity baseEntity);
当然所有的Entity也都是要继承BaseEntity的。在实现UserDao的时候,打算写成
public void add(UserEntity userEntity);
但是报错了。因为没有实例化虚函数add(BaseEntity baseEntity);是不是强制转换一下就可以?或者还有更好的办法来实现?多谢各位帮忙。谢谢java 继承 java继承Daoabstract

解决方案 »

  1.   

    public interface Entiry { ... }public interface EntiryDAO<E extends Entity> {
      
      public void add(E entiry);  ... 
    }public abstract class BaseEntityDAO<E extends Entiry> implements EntiryDAO<E> {
      
      ...
    }public class UserDAO extends BaseEntiryDAO<UserEntity> {  @Override
      public void add(UserEntiry user) { ... }  ...
    }
      

  2.   

    Entiry -> Entity , 手滑
      

  3.   

    public interface IBaseDAO<E> {

    /**
     * 查询一个实体
     * @param <T>
     * @param entityClass
     * @param entityId
     * @return
     */
    public  <T> T find(Class<T> entityClass,Object entityId);

    /**
     * 持久化一个对象
     * @param object
     */
    public void persist(E object); /**
     * 更新一个对象
     * @param object
     */
    public void merge(E object);我是这样干的
      

  4.   

    其实做法就是很简单的,利用泛型就可以了
    先写个interface,然后写个abstract类给接口一些方法填写默认的实现方法,
    需要继续让子类重载的方法就不用给写方法体了