Мне нужно, чтобы Inteface реализовывался разными классами для своих методов, а также для использования полиморфизма в этом супертипе.
Все классы имеют одинаковые характеристики, и они должны быть дочерними по отношению к суперклассу или реализовывать один и тот же интерфейс.
Однако одному из классов, реализующих Interface, нужны его методы, но он не должен быть типа Interface.
Есть ли способ исключить класс из полиморфизма без клонирования Interface и использовать его только для одного класса?
Это где-то нужный мне интерфейс:
@FunctionalInterface
public interface Interface
{
Rapport makeRapport(Collection<Student> studs);
default RapportType getType()
{
return this.getClass().getAnnotation(Type.class).value();
}
}
"Однако одному из классов, реализующих Interface, нужны его методы, но он не должен быть типа Interface." Это не имеет смысла - если это implements, то это interface, то это по определениюэто; вот что означает наследование. Предположительно, вам нужны методы для их вызова - это делает его Interface.
Что значит «нужны его методы»? Разве нельзя просто реализовать эти методы без реализации интерфейса?
Интерфейс имеет метод по умолчанию и один абстрактный метод. Мои подклассы должны быть интерфейсом также (но не только), потому что они используют эти методы. Один из них немного отличается и вызывает проблемы, которых не вызывают другие классы, поэтому я хотел бы реализовать этот интерфейс, не считая этот класс интерфейсом.




Не уверен, что вы имеете в виду, говоря об исключении из полиморфизма. Можете ли вы включить какой-нибудь код?