JAVA基础_自定义泛型

Posted 高山仰止

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA基础_自定义泛型相关的知识,希望对你有一定的参考价值。

泛型的来源

在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基础_自定义泛型的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 泛型意淫之旅

Java基础学习——泛型

Java:泛型基础

Java:泛型基础

阶段1 语言基础+高级_1-3-Java语言高级_04-集合_02 泛型_3_定义和使用含有泛型的类

Java基础之泛型