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月3日 17:52
下一篇 2021年1月4日 02:33

相关推荐

  • 2.11Java语言的可访问性(Accessibility)

    同一个类中 同一个包中 子类中 全局范围内 public 有 有 有 有 protected 有 有 有 —————— default 有 有 —————— —————— private 有 —————— —————— —————— 注意:default是指不包含任何可访问性修饰符。

    Java语言教程 2021年1月11日
    09380
  • 1.2Java语言的标识符(Identifier)和关键字(Keyword)

    1.标识符 标识符必须以字母(A~Z 和 a~z)开头,后续可以是任何字母(A~Z 和 a~z)、数字(0~9)。Java 标识符区分大小写。 出于历史原因,美元符号($)、下划线(_)也是标识符。下划线可以用在由两个或多个字符组成的标识符中,但由于是关键字,它不能单独作为标识符使用。 2.命名约定 3.关键字 51个…

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

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

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

发表回复

登录后才能评论