Я хотел бы использовать общий тип, чтобы гарантировать, что аргументы метода одного и того же типа, как это:Можно ли использовать общий тип общего метода Java для принудительного применения типа аргументов?
public static <T> void x(T a, T b)
Я бы предположил, что два аргумента (а и б), то есть переданные этому методу, всегда должны быть одного типа. Но, к моему удивлению, мне удалось передать аргументы любого типа (даже примитивы) методу x, как если бы T было стерто с Object, независимо от того, какие аргументы переданы.
Единственная работа вокруг я нашел до сих пор, было использование «расширяет», как это:
public static <T, U extends T> void x(T a, U b)
Но хотя я могу жить с этим, это не то, что я хотел.
Есть ли способ использовать общий тип, чтобы заставить тип всех аргументов метода?
Показать код. – GriffeyDog
Какая у вас конечная цель? Если это то, что тип среды выполнения двух объектов одинаковый, вы не можете сделать это во время компиляции. Рассмотрим: «Номер n1 = Целое число.valueOf (1); Номер n2 = Double.valueOf (2.3); x (n1, n2) '. Но трудно дать больше указаний, чем это, не зная, чего вы в конечном итоге пытаетесь достичь. – yshavit
Для чего это нужно? Почему это имеет значение? – Radiodef