java - 为什么要对通用 DAO 接口(interface)中的方法使用默认访问权限?

标签 java default dao access-modifiers generic-interface

我在浏览时发现了通用 DAO 接口(interface)的代码:

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、平面文件...)的实现中找到吗?

最佳答案

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

Checkstyle even has a rule检查接口(interface)方法中是否未使用 public。

关于java - 为什么要对通用 DAO 接口(interface)中的方法使用默认访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067915/

相关文章:

ruby - 在 Ruby 中覆盖 BigDecimal to_s 默认值

java - 如何正确地将工厂方法应用到DAO工厂中?

java - hibernate 失去连接

java - 在 hibernate 中执行查询时,我应该如何解决异常 "Unable to resolve path"?

java - 在 jhipster 项目中将实体属性 Camel 大小写转换为 json 中的蛇大小写

java - 为什么 getResourceAsStream() 在 IDE 中有效,但在 JAR 中无效?

java - 在 visualvm 堆转储中, "Local Variable"之后的线程数是多少?

java - 相机 Intent 在某些设备上不起作用

oracle - 如何确定 PL/SQL 参数值是否为默认值?

perl - 在非默认浏览器中打开的浏览器中启动 url