According to JLS 8.5.1. Static Member Type Declarations :
A member interface is implicitly static ( §9.1.1 ). It is not necessary to specify the static modifier.
An interface is a member of a class that is implicitly static. When declaring an interface - a member of a class, an excessive indication of the static modifier is allowed.
Constructions
public class SomeClass { abstract static interface Interface { public abstract void foo(); } }
and
public class SomeClass { interface Interface { void foo(); } }
are equivalent, since the interface is always abstract , the nested interface is always static , and the interface methods are always public . Before java 8, interface methods were always abstract , in the eighth version the interface method can be static or default , in the absence of these modifiers, the abstract implied. Explicit specification of modifiers is permissible, but not welcomed in terms of style.
Fields in the interface are always public , static and final , the redundant indication of these modifiers is also valid.