Кстати, я почти уверен, что используемый вами синтаксис неправильный, поэтому, в любом случае, лучше всего сообщить об этом вашему инструктору.
Проблема в том, что IPrototype
используется здесь как необработанный тип.Второй раз, когда он используется в строке, это просто IPrototype
без переменной типа.Это не-нет в Java.
Что касается происходящего, все это означает, что параметр типа для IPrototype
должен иметь тип IPrototype
, то есть некоторый подкласс IProtoType
.Взгляните на тип Java Enum
, который использует точно такой же шаблон: https://docs.oracle.com/javase/10/docs/api/java/lang/Enum.html
public interface IPrototype<T extends IPrototype<T>> extends Cloneable {
// ^^^ add this
//clone: Permite realizar una clonacion superficial del prototipo.
public T clone();
//deepClone: Permite realizar una clonación profunda del prototipo.
public T deepClone();
}