我无法理解T是如何使用Integer和String的。在显示函数中,T处理Integer和String。这段代码是如何工作的?
class firstBase {
<T> void display(T give_num, T give_String) {
System.out.println("The given number is = "
+ give_num + " The given String is = " + give_String);
System.out.println("The class of given number is = "
+ give_num.getClass() +
" The class of given_String is = "+give_String.getClass());
}
}
public class testanonymous {
public static void main(String[] args) {
firstBase fb = new firstBase();
fb.display(100, "xyz");
}
}
答案 0 :(得分:5)
你正在调用方法的 raw 形式,基本上等于
void display(Object give_num, Object give_String)
此处,您提供的两个参数都适合,因为100
自动装箱到Integer
(Object
的子类)和“xyz”是String
(这是Object
)
要正确使用泛型,您必须执行以下操作:
fb.<String>display(100, "xyz");
或
fb.<Integer>display(100, "xyz");
在这两种情况下,您都会注意到代码无法编译,因为编译器会知道您在运行时用T
/ Integer
替换String
的意图,但参数类型与提供的类型不同。