Конечно, в Java не работает следующее (без абстрактных статических методов) ...
public abstract class Animal {
public abstract static Animal getInstance(byte[] b);
}
public class Dog extends Animal {
@Override
public static Dog getInstance(byte[] b) {
// Woof.
return new Dog(...);
}
}
public class Cat extends Animal {
@Override
public static Cat getInstance(byte[] b) {
// Meow.
return new Cat(...);
}
}
Какой правильный способ потребовать, чтобы Animal
классы имели статический getInstance
метод, который сам создает экземпляр? Этот метод должен быть статическим; «нормальный» абстрактный метод здесь не имеет смысла.