Как исключить классы из полиморфизма [JAVA]

Мне нужно, чтобы Inteface реализовывался разными классами для своих методов, а также для использования полиморфизма в этом супертипе. Все классы имеют одинаковые характеристики, и они должны быть дочерними по отношению к суперклассу или реализовывать один и тот же интерфейс.

Однако одному из классов, реализующих Interface, нужны его методы, но он не должен быть типа Interface.

Есть ли способ исключить класс из полиморфизма без клонирования Interface и использовать его только для одного класса?


Это где-то нужный мне интерфейс:

@FunctionalInterface
public interface Interface
{
    Rapport makeRapport(Collection<Student> studs);

    default RapportType getType() 
    {
        return this.getClass().getAnnotation(Type.class).value();
    }    

}

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

Tim Biegeleisen 19.05.2018 11:29

"Однако одному из классов, реализующих Interface, нужны его методы, но он не должен быть типа Interface." Это не имеет смысла - если это implements, то это interface, то это по определениюэто; вот что означает наследование. Предположительно, вам нужны методы для их вызова - это делает его Interface.

Boris the Spider 19.05.2018 11:30

Что значит «нужны его методы»? Разве нельзя просто реализовать эти методы без реализации интерфейса?

Marco 19.05.2018 11:48

Интерфейс имеет метод по умолчанию и один абстрактный метод. Мои подклассы должны быть интерфейсом также (но не только), потому что они используют эти методы. Один из них немного отличается и вызывает проблемы, которых не вызывают другие классы, поэтому я хотел бы реализовать этот интерфейс, не считая этот класс интерфейсом.

Luca 19.05.2018 11:59
Предпочтительный состав перед наследованием. Вот почему. Так что вы этого не добьетесь. Что бы ни было «это».
Boris the Spider 19.05.2018 12:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
62
0

Другие вопросы по теме