Я определил интерфейс IPersistent
, который имеет два метода: load
и save
. Используя эти методы, я могу загрузить или сохранить класс реализации, используя любой метод, который они хотят.Статический метод в интерфейсе
public interface IPersistent {
void save();
void load(int id);
}
То, что я хочу сейчас, чтобы реализовать метод deleteAll
, но он должен быть статическим методом, так как он действует на уровне класса, а не уровень объекта. Я попытался использовать статический метод в интерфейсе, но это невозможно, так как мне нужно будет реализовать его в интерфейсе, а не в любом классе реализации.
Типичное использование было бы что-то вроде этого:
class Foo implements IPersistent {
void load(int id) { ... }
void save() { ... }
static void deleteAll() { ... }
}
List<foo> fooList = ...;
Foo.deleteAll();
for (Foo f: fooList) {
f.save();
}
Как бы это реализовать?
Почему бы не использовать абстрактный класс вместо интерфейса? – Naveed
Итак, у вас есть проблема, как [это] (http://stackoverflow.com/questions/21817/why-cant-i-declare-static-methods-in-an-interface)? – Aracthor
@Nizil У меня есть Java 8, но у нее будет только одна реализация. Я хочу реализацию для каждого класса. –