Я хотел бы использовать общий тип, чтобы гарантировать, что аргументы метода имеют один и тот же тип, например:
public static <T> void x(T a, T b)
Я бы предположил, что два аргумента (a и b), которые передаются этому методу, всегда должны быть одного типа. Но, к моему удивлению, мне удалось передать аргументы любого типа (даже примитивы) методу x, как если бы T было стерто с Object, независимо от того, какие аргументы переданы.
Единственная работа, которую я нашел до сих пор, заключалась в том, чтобы использовать "extends" следующим образом:
public static <T, U extends T> void x(T a, U b)
Но хотя я могу жить с этим, это не то, что я хотел.
Есть ли способ использовать общий тип, чтобы заставить тип всех аргументов метода?