码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础_自定义泛型

时间:2017-09-10 17:44:39      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:修饰符   integer   括号   交集   3.5   stat   ram   operator   编译器   

泛型的来源

在Java中,泛型借鉴了C++的模版函数,从而引入了泛型。

  • 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;
    }
}

JAVA基础_自定义泛型

标签:修饰符   integer   括号   交集   3.5   stat   ram   operator   编译器   

原文地址:http://www.cnblogs.com/homeword/p/7501465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!