Допустим, у вас есть интерфейс с именем List
, и вы хотите использовать метод статической фабрики для создания списков другого типа.Вы не можете определить статические фабричные методы в интерфейсе List
, потому что это интерфейс.Так что для этого нужно иметь класс, который возвращает экземпляры классов, которые реализуют List
public class ListFactory{
private ListFactory(){}
public static List makeArrayList(){...}
public static List makeLinkedList(){...}
public static List makeCrazyList(){...}
}
Вы не можете сделать это
public interface List{
public static List makeArrayList();
public static List makeLinkedList();
public static List makeCrazyList();
}
, поскольку List
является интерфейсом