【问题标题】:Why use default access for methods in a generic DAO interface?为什么对通用 DAO 接口中的方法使用默认访问?
【发布时间】:2011-08-15 16:47:34
【问题描述】:

我在浏览时发现了这个通用 DAO 接口的代码:

public interface GenericDAO<T, ID extends Serializable> {

    Class<T> getEntityClass();

    T findById(final ID id);

    List<T> findAll();
    List<T> findByExample(final T exampleInstance);

    List<T> findByNamedQuery(
        final String queryName,
        Object... params
    );

    List<T> findByNamedQueryAndNamedParams(
        final String queryName,
        final Map<String, ?extends Object> params
    );

    int countAll();

    int countByExample(final T exampleInstance);

    T save(final T entity);

    boolean delete(final T entity);
}

有什么特别的理由让方法使用默认访问修饰符(类/包:是,子类/世界:否)?

P.S:一个附加问题。 ID 通常在不依赖于 RDBMS(XML、平面文件...)的实现中找到吗?

【问题讨论】:

    标签: java default dao access-modifiers generic-interface


    【解决方案1】:

    接口的方法是隐式公开的。因此,使用 public 修饰符是多余且不必要的。

    Checkstyle even has a rule 检查接口方法中是否没有使用 public。

    【讨论】:

    • +1,点对点。除此之外,接口方法隐式为public,而字段为publicstaticfinal
    • 你是对的。我完全忘记了这个事实。 @adarshr:我还没有遇到界面中的字段。以下主题声明它们充当常量:coderanch.com/t/408233/java/java/Instance-variables-interface
    • 顺便问一下,关于拥有ID的问题有什么意见吗?
    • 无论用于存储持久对象的技术如何,您都必须能够唯一地识别它们。所以我会说是的。顺便说一句,XML 中的 id 属性有一个特殊的含义:它唯一地标识文档中的一个元素。
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多