Дополнительная параметризация в Java с Дженериками

Проблема с глобальными переменными состоит в том, что, так как каждая функция имеет доступ к ним, становится все больше трудно выяснить, какие функции на самом деле чтение и пишет этим переменным.

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

, Если Вы не полагаетесь на глобальные переменные, можно раздать состояние между различными функциями по мере необходимости. Тем путем Вы получаете намного лучшую возможность понимания, что делает каждая функция, поскольку Вы не должны принимать глобальное состояние во внимание.

13
задан Massimiliano Kraus 12 June 2019 в 11:51
поделиться

3 ответа

Простой ответ: нет, java не поддерживает такую ​​параметризацию по умолчанию.

19
ответ дан 1 December 2019 в 22:58
поделиться

Для этого никогда не бывает веской причины. Обычно вы указываете параметры универсального типа, потому что некоторые аргументы метода принимают или возвращают параметр этого типа. Если бы неуказанные были допустимы, это могло бы означать, что вы намеревались не выполнять какую-либо значимую реализацию этих методов.

В любом случае, чтобы решить вашу предполагаемую проблему, просто укажите «Объект» для любого параметра типа, который вы не хотите указывать . Или расширите абстрактный класс другим абстрактным классом, который имеет только один параметр типа (указав Object как второй параметр типа в вашем вызове extends).

1
ответ дан 1 December 2019 в 22:58
поделиться

Что ж, правильным решением для вашего случая может быть

// parametrized only mandatory imlementation class
public class RealClass<StillGeneric extends Par1Class>
extends AbsClass<ClassThatExtendsPar1, StillGeneric> {
    // code
}
0
ответ дан 1 December 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: