Skip to content
Advertisement

Is there such a thing as a “local interface” in Java?

Java allows me to define local abstract classes, like in this example:

JavaScript

For some reason, when I try to define a “local interface” instead of the local class, like this:

JavaScript

Java complains that “The member interface Bar can only be defined inside a top-level class or interface”. Is there a reason for this? Or am I missing a mistake I made?

Advertisement

Answer

There simply isn’t a definition for it in the JLS. It just doesn’t exist.

As for a weak reason, according to the JLS 14.3:

All local classes are inner classes (§8.1.3).

An interface can’t be inner (JLS 8.1.3):

Member interfaces (§8.5) are implicitly static so they are never considered to be inner classes.

So we can’t have a local interface.

This is, I guess, in addition to what @SotiriosDelimanolis has found that InterfaceDeclaration is not a BlockStatement.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement