为什么在通用DAO接口中使用方法的默认访问?

Jam*_* P. 0 java dao default access-modifiers generic-interface

我在浏览时找到了通用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);
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由特别留下具有默认访问修饰符的方法(类/包:是,子类/世界:否)?

PS:一个补充问题.ID通常是在不依赖于RDBMS(XML,平面文件......)的实现中找到的吗?

JB *_*zet 8

界面的方法是公开的.因此,使用公共修饰符是多余的并且是不必要的.

Checkstyle甚至有一个规则来检查接口方法中是否没有使用public.