Java 在DAO模式中使用泛型 //域类 公共级演员{ 私有int-id; 私有字符串名; 私有字符串lastName; 私人日期最新更新; //接球手和接球手 } //DAO接口 公共接口IDao{ 无效保存(T); } //混凝土类 公共类ActorDao实现IDao{ @凌驾 公共无效保存(参与者){ //错误:ActorDao类型的方法save(Actor)必须重写或实现超类型方法 } }

Java 在DAO模式中使用泛型 //域类 公共级演员{ 私有int-id; 私有字符串名; 私有字符串lastName; 私人日期最新更新; //接球手和接球手 } //DAO接口 公共接口IDao{ 无效保存(T); } //混凝土类 公共类ActorDao实现IDao{ @凌驾 公共无效保存(参与者){ //错误:ActorDao类型的方法save(Actor)必须重写或实现超类型方法 } },java,generics,dao,Java,Generics,Dao,当IDao的参数为T时,为什么被重写的save()不接受Actor?您需要指定T是什么类,如下所示: // Domain Class public class Actor { private int id; private String firstName; private String lastName; private Date lastUpdate; // getters and setters } // DAO Interface pub

IDao
的参数为
T
时,为什么被重写的
save()
不接受
Actor

您需要指定T是什么类,如下所示:

// Domain Class
public class Actor {

    private int id;
    private String firstName;
    private String lastName;
    private Date lastUpdate;

    // getters and setters
}



// DAO Interface
public interface IDao<T> {

    void save(T t);

}



// Concrete Class
public class ActorDao implements IDao {

    @Override
    public void save(Actor actor) {
        // Error: The method save(Actor) of type ActorDao must override or implement a supertype method

    }

}
公共类ActorDao实现IDao{

在接口名称中使用
I
违反了强大的Java惯例。此外,(1)
Date
已过时;您希望使用
Instant
,以及(2)如果您可以使用Spring数据,它将自动为您的DAO接口自动生成实现。看到太多的C#哈哈。
Date
java.sql.Date
。Spring数据可以用于非web应用程序吗?
java.sql.Date
甚至更过时;改用
java.time
和Spring数据可用于在完整JVM上运行的任何应用程序(不是Android、智能卡等)。下一步将对此进行研究,谢谢!就这个线程而言,一切都很好!
public class ActorDao implements IDao<Actor> {