В последнее время я столкнулся с методом, подобным этому, и я не совсем понимаю его использование:
public static <T, U extends T> T foo(U u) { ... }
Пример использования может быть таким:
// Baz is just the containing class of foo()
Number n = Baz.foo(1);
Где T
выводится в Number
а U
(вероятно) в Integer
. Но я не могу обернуться, когда это лучше, чем, например, определение этого метода:
public static <T> T bar(T t) { ... }
Если я назову это так:
Number n = Baz.bar(2);
Код все еще работает. T
выводится либо Number
или Integer
(Не знаю, если аргумент типа, в данном примере Integer
является более предпочтительным, чем вызов сайт возвращаемого типа Number
)
Я прочитал эти вопросы: 1, 2, но я все еще не знаю, имеет ли первый метод с 2 параметрами какое-либо преимущество перед вторым методом только с одним универсальным.