Java 不同类中的泛型接口

Java 不同类中的泛型接口,java,generics,interface,overriding,Java,Generics,Interface,Overriding,在我的项目中,我必须经常使用数据库,我决定创建一个接口,然后在不同的类中实现它,因为它们都使用相同的方法 public interface Project<E> { void createTable(); void insert(E obj); E select(int id); void delete(int id); void update(E obj, int id); } 问题是,当

在我的项目中,我必须经常使用数据库,我决定创建一个接口,然后在不同的类中实现它,因为它们都使用相同的方法

public interface Project<E> {

        void createTable();

        void insert(E obj);

        E select(int id);

        void delete(int id);

        void update(E obj, int id);

}
问题是,当我尝试重写insert()和update()方法时,会显示一条错误消息“该方法必须重写或实现超类型方法”。我使用泛型,因为我认为它可以在我的代码中工作,因为我有不同对象的不同类来实现它,但我不理解正确的实现。我想知道如何在我的类中更改接口或其实现,使其能够工作。另外,当我删除@Override时,它会删除错误,但仍然显示我没有实现所有的方法。 提前谢谢。

您可以使用

公共接口DAO{
void createTable();
空隙插入物(T);
T选择(int-id);
无效删除(int-id);
无效更新(T,int-id);
}
实施

class PersonDAO implements DAO<Person> {

  @Override
  public void createTable() {}

  @Override
  public void insert(Person person) {
    /// Connection connection = null;
    /// PreparedStatement ppStm = null;
    // Detailed implementation
    //// .............
  }

  @Override
  public Person select(int id) {
    return null;
  }

  @Override
  public void delete(int id) {}

  @Override
  public void update(Person person, int id) {}
}
类PersonDAO实现DAO{
@凌驾
public void createTable(){}
@凌驾
公共无效插入(人){
///连接=空;
///PreparedStatement ppStm=null;
//详细实施
//// .............
}
@凌驾
公众人物选择(int id){
返回null;
}
@凌驾
公共无效删除(int-id){}
@凌驾
公共无效更新(Person,int-id){}
}

您可以尝试使用
公共类Person implements Project
是的,我试过这样做,结果成功了。非常感谢你的建议
public interface DAO<T> {

  void createTable();

  void insert(T t);

  T select(int id);

  void delete(int id);

  void update(T t, int id);
}
class PersonDAO implements DAO<Person> {

  @Override
  public void createTable() {}

  @Override
  public void insert(Person person) {
    /// Connection connection = null;
    /// PreparedStatement ppStm = null;
    // Detailed implementation
    //// .............
  }

  @Override
  public Person select(int id) {
    return null;
  }

  @Override
  public void delete(int id) {}

  @Override
  public void update(Person person, int id) {}
}