Тело интерфейса может объявлять члены интерфейса, т.е. поля, методы, классы и интерфейсы.
Смысл работы интерфейса мне вроде бы понятен, но хотелось бы дополнить свое понимание ответом на следующий вопрос. Для чего может понадобиться объявлять интерфейс в интерфейсе?
В практике, если честно, я такого не встречал, а если бы и встретил — постарался бы уйти от этого, потому что это может усложнять код. Да и по законам чистого кода, одна сущность (класс, метод, интерфейс) — одна задача и не более. Делать вложенные интерфейсы и классы, обычно, не самая лучшая затея (хотя и иногда бывает нужно, как, например, в шаблоне Builder
).
Но, если все-таки предположить, что такое возможно и придумать ситуацию, у меня вышло так:
public interface ProjectMaker {
interface MakeHelper {
void makeThisPart(Project project);
void makeAllParts(Project project);
}
void makeProject(MakeHelper maker);
}
public class SomeClass {
ProjectMaker mProjectMaker = ...;
public void makeSomeClass {
mProjectMaker.makeProject(new ProjectMaker.MakeHelper() {
@Override
public void makeThisPart(Project project) {
...
}
@Override
public void makeAllParts(Project project) {
...
}
});
}
}
P.S. Не стоит "на ходу" создавать реализации интерфейсов, как в методе makeSomeClass()
. Лучше сначала создать объект, который реализует интерфейс и передать уже его.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как запустить проект (программу) в Eclipse? Есть проект джава, я его через SVN сохранил на компьютер для последующего дебагаНо у меня не выходит...
Использую готовый скрипт для сборки, всё запускается и вроде бы всё хорошоНо почему не работает отладка ? я предполагаю нужно добавить еще...