Я пытался найти способ создать интерфейс/абстрактный метод с объявлением/расширением класса в качестве возвращаемого типа. (например, classA расширяет интерфейс A, и метод должен возвращать объект ClassA).
Теперь я нашел сообщение о том, что компилятор не будет жаловаться на что-то подобное, но JVM не может справиться с такими вещами, а это означает, что эта механика просто не существует в java.
Поэтому я пришел к следующей идее, из которой я понятия не имею, достаточно ли это технически безопасно, чтобы сделать. (например, вызовет ли это петлю)
public interface ISomeInterface<T extends ISomeInterface<T>> {
public T get();
}
это означает, что вы можете использовать его таким образом. Хотя это не заставляет внешнего пользователя использовать расширяющий класс, но, по крайней мере, дает возможность сделать это, если это необходимо:
public class ExtendingClass implements ISomeInterface<ExtendingClass>{
@Override
public ExtendingClass get(){}
}
Теперь это не дает компилятора или ошибки времени выполнения, но меня беспокоит, не создаст ли это каких-либо проблем при интенсивном использовании.
Я был бы признателен, если бы кто-то мог подтвердить, что это вызовет или не вызовет проблем. (любые другие отзывы также приветствуются).
enum
, которые объявляются как общедоступный класс Enum‹E расширяет Enum‹E›› - person markspace   schedule 02.04.2016