This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
(1) Interfaces declared inside a class or other interface are always implicitly static. So what? This fact is not particularly useful, except that inner classes may not declare static things (static initializers, static fields, static methods, static nested classes, or interfaces). Inner classes may not declare interfaces. Top-level classes, static member classes and interfaces may declare interfaces. (2) Interfaces declared in classes can have private, default, protected or public access. Interfaces declared in interfaces are implicitly public. (3) Static nested types serve as a structuring and scoping mechanism for logically related types. Sources: JLS 8.1.2, 8.5, 9.5, The Java Programming Language 5.1, 5.6
Member interfaces are always implicitly public and static (these modifiers are allowed but are unnecessary), abstract (use is discouraged) and can be declared strictfp. Furthermore, interfaces which are class members can be declared protected or private. Member interfaces, being implicitly static, cannot be declared in non-static nested classes.