Я делаю это все время. Это особенно удобно для специальных реализаций служебных интерфейсов, например ::1001
/** A holder for {@link Thing}s. */
public interface ThingsHolder {
/** A {@link ThingsHolder} with nothing in it. */
public static final ThingsHolder EMPTY_HOLDER = new ThingsHolder() {
@Override
public Iterable<Thing> getThings() {
return Collections.emptySet();
}
};
/** Provides some things. */
Iterable<Thing> getThings();
}
Вы можете создать закрытый статический внутренний класс с именем EmptyHolder
, и, возможно, в некоторых случаях это сделает код более читабельным, но нет никаких причин, по которым у вас есть , чтобы сделать это.