2011-08-15 111 views
0

我发现这个代码的通用DAO接口,而随便逛逛:为什么在通用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,平面文件...)的实现中找到?

回答

8

接口的方法是隐式公开的。使用公共修饰符是多余的和不必要的。

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

+0

+1,spot on。为了增加它,接口方法隐式为'public',而字段为'public''static'' final' – adarshr

+0

你是对的。我完全忘记了这个事实。 @adarshr:我还没有遇到接口中的字段。以下主题指出它们作为常量:http://www.coderanch.com/t/408233/java/java/Instance-variables-interface –

+0

顺便说一下,有关有关ID的问题的任何意见? –

相关问题