标签:修饰符 integer 括号 交集 3.5 stat ram operator 编译器
泛型的来源
在Java中,泛型借鉴了C++的模版函数,从而引入了泛型。
int add(int x,int y){ return x + y; } float add(float x.float y){ return x + y; } double add(double x,double y){ return x + y; } // 泛型函数对上面的整数,浮点数的抽象和实现 template<class T> T add(T x,T y){ return x + y; }
public class MyGeneric { public static void main(String[] args) { // 泛型推断的一般原则,用于返回泛型参数中的交集,且泛型参数必须为引用类型 // 3 自动装箱 Integer 5 自动装箱Integer 所以 推断出Integer Integer result1 = add(3, 5); // 3.5 自动装箱 Double 5 自动装箱Integer 所以推断出共有的父类Number Number result2 = add(3.5, 5); // 3 自动装箱Integer str1 String 共有的交集,都是Object Object result3 = add(3, "str1"); } /** * 泛型方法的定义: * 用于放置泛型的类型参数的尖括号应出现在方法的其他所有修饰符之后和在方法的返回类型之前,也就是紧邻返回值之前,下面的 <T> * 按照惯例,类型参数通常用单个大写字母表示 * 只有引用类型才会被当作方形方法的参数,会自动装箱的也算 * @param x * @param y * @return */ public static <T> T add(T x,T y) { // 这里编译器会报错:The operator + is undefined for the argument type(s) T, T // 因为不是所有的泛型都支持 + 操作,但是由这个方法可以看到java的类型推断 // T result = x + y; return null; } }
标签:修饰符 integer 括号 交集 3.5 stat ram operator 编译器
原文地址:http://www.cnblogs.com/homeword/p/7501465.html