<t>如何处理String和Integer </t>

时间:2014-11-13 14:35:01

标签: java generics

我无法理解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");
    }
}

1 个答案:

答案 0 :(得分:5)

你正在调用方法的 raw 形式,基本上等于

void display(Object give_num, Object give_String)

此处,您提供的两个参数都适合,因为100自动装箱到IntegerObject的子类)和“xyz”是String (这是Object

的子类

要正确使用泛型,您必须执行以下操作:

fb.<String>display(100, "xyz");

fb.<Integer>display(100, "xyz");

在这两种情况下,您都会注意到代码无法编译,因为编译器会知道您在运行时用T / Integer替换String的意图,但参数类型与提供的类型不同。