Проблема с глобальными переменными состоит в том, что, так как каждая функция имеет доступ к ним, становится все больше трудно выяснить, какие функции на самом деле чтение и пишет этим переменным.
, Чтобы понять, как приложение работает, в значительной степени необходимо принять во внимание каждую функцию, которая изменяет глобальное состояние. Это может быть сделано, но поскольку приложение растет, это станет более твердым на грани того, чтобы быть фактически невозможным (или по крайней мере полная пустая трата времени).
, Если Вы не полагаетесь на глобальные переменные, можно раздать состояние между различными функциями по мере необходимости. Тем путем Вы получаете намного лучшую возможность понимания, что делает каждая функция, поскольку Вы не должны принимать глобальное состояние во внимание.
Простой ответ: нет, java не поддерживает такую параметризацию по умолчанию.
Для этого никогда не бывает веской причины. Обычно вы указываете параметры универсального типа, потому что некоторые аргументы метода принимают или возвращают параметр этого типа. Если бы неуказанные были допустимы, это могло бы означать, что вы намеревались не выполнять какую-либо значимую реализацию этих методов.
В любом случае, чтобы решить вашу предполагаемую проблему, просто укажите «Объект» для любого параметра типа, который вы не хотите указывать . Или расширите абстрактный класс другим абстрактным классом, который имеет только один параметр типа (указав Object как второй параметр типа в вашем вызове extends).
Что ж, правильным решением для вашего случая может быть
// parametrized only mandatory imlementation class
public class RealClass<StillGeneric extends Par1Class>
extends AbsClass<ClassThatExtendsPar1, StillGeneric> {
// code
}