【问题标题】:Using Generics in DAO Pattern在 DAO 模式中使用泛型
【发布时间】:2019-08-05 03:10:46
【问题描述】:
// 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

    }

}

IDao 的参数为T 时,为什么覆盖的save() 不接受Actor

【问题讨论】:

  • 在接口名称中使用I 是违反Java 约定的。此外,(1)Date 已过时;你想要Instant,并且(2)如果你可以使用Spring Data,它会自动为你的DAO接口自动生成实现。
  • 看到太多 C# 得到I 哈哈。 Datejava.sql.Date。 Spring Data 可以用于非 Web 应用吗?
  • java.sql.Date 更加过时了;请改用java.time。并且 Spring Data 可以用于在完整的 JVM(不是 Android、智能卡等)上运行的任何应用程序中。
  • 接下来会调查,谢谢!就这个线程而言,一切都很好!

标签: java generics dao


【解决方案1】:

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

public class ActorDao implements IDao<Actor> {

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2016-10-28
    • 2011-09-08
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多