2.4Java引用类型之泛型(Generic)

1.泛型类或接口

类型变量放在类名或接口名的后面。

class 类名<T1, T2> 
{
    //类体
}
interface 接口名<T1, T2> 
{
    //接口体
}
public class Pair<T> 
{

    private T first;
    private T second;

    public Pair() 
    { 
        first = null;
        second = null;
    }

    public Pair(T first, T second) 
    {
        this.first = first;
        this.second = second;
    }

    public T getFirst() 
    {
        return first;
    }

    public T getSecond() 
    {
        return second;
    }

    public void setFirst(T newValue) 
    {
        first = newValue;
    }

    public void setSecond(T newValue) 
    {
        second = newValue;
    }
}

2.泛型方法

类型变量放在修饰符的后面,并在返回类型的前面。

在方法中也可以使用泛型,即方法的参数类型或返回值类型,可以用类型参数表示。

修饰符 <T> T 方法名(T a, T b) 
{
    //方法体
}
class ArrayAlg 
{
    public static <T> T getMiddle(T...a) 
    {
        return a[a.length / 2];
    } 
}

4.通配符泛型类型

4.1无限定通配符

无限定通配符?的含义为Object类型。

class Pair<?>
{
    //返回类型只能是Object对象
    ? getFirst()
    {
        //方法体
    }
    
    //只可以调用Object对象
    void setFirst(?)
    {
        //方法体
    }
}

4.2协变(Covariance)

类型参数可以使用继承自已知类型的任何子类型。

//单个约束
<? extends Employee>
//多个约束
<? extends Comparable & Serializable>

4.3逆变(Contravariance)

类型参数可以使用已知类型的任何超类型。

<? super Manager>

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/2514.html

(0)
上一篇 2021年1月4日 00:01
下一篇 2021年1月4日 02:33

相关推荐

  • 2.10Java类型之密封(Sealed)类和密封(Sealed)接口

    1.密封父类或父接口声明 声明一个类为密封类,只有指定的类才可以继承该类。 声明一个接口为密封接口,只有指定的接口可以继承该接口,只有指定的类可以实现该接口。 2.密封子类或子接口继承 所有子类或子接口必须显性或隐性地用关键字 final,sealed或non-sealed 修饰。 3.密封子类实现

    Java语言教程 2021年1月10日
    01220
  • 1.3Java语言的分隔符(Separator)和运算符(Operator)

    分隔符 分隔符又称标点符号,作用与标点符号一样,都是起分隔作用。 分隔符 名称 ( ) 圆括号 { } 花括号 [ ] 方括号 ; 分号 , 逗号 . 圆点 … 省略号 @ at符号 :: 双冒号 运算符 1.一元加减运算符 运算符 名称 描述 +x 一元加 返回其操作数的值。 –x 一元减 对其操作数的数值取负。…

    Java语言教程 2020年11月3日
    02.5K0
  • 2.1Java语言的模块(Module)和包(Package)

    模块(Module) 模块是包的集合。 包(Package) 包是类的集合。 导入包使用import语句,位于package语句之后,类定义之前。 静态导入允许导入静态变量、静态常量、静态方法。

    Java语言教程 2021年1月1日
    01.9K0

发表回复

登录后才能评论