关于java中的泛型变量与泛型类

泛型:

在进行程序的编写时,有时我们在定义某些类、方法、变量时,需要支持多种类型的数据,因此,为避免重复、增加程序的复用性,我们可以使用泛型编写、设计组件,提升组件的适用性与灵活性。

使用泛型的语言常见的有java、C#等。

简单来说,泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持。

但作为提升复用性的代价,泛型组件的使用舍弃了具体数据类型变量中的大多数方法。此外,泛型的限制性还有:

  • 泛型变量不能使用基本类型实例化类型参数;
  • 运行时类型查询只适用于原始类型;
  • 不能创建参数化类型的数组;
  • 不能实例化类型变量;
  • 不能构造泛型数组;
  • ......

泛型方法:

public static <T> T getMiddle(T... a) {

    return a[a.length / 2];

}

典型泛型方法如上,返回任意类型的数组的中间元素,T可以被任意数据类型取代。

泛型类:

java语言中典型的泛型类如ArrayList、Set等,下面是一个简单泛型类的声明:

public class Pair<T> {

    private T f;
    private T s;

    public Pair() {
    
        f = null;
        s = null;

    }

    public Pair(T f, T s) {

        this.f = f;
        this.s = s;

    }

    public getF() {

        return f;

    }

    public getS() {

        return s;

    }

}

通配符:

为解决泛型在使用中的限制,java语言提出了通配符的概念:

在通配符类型中,允许类型参数发生变化。例如:

Pair<? extends Emloyee>

表示泛型Pair类型,其类型参数时Employee的子类,并可以调用Employee类中的方法。

通配符的功能于泛型大体相同,只不过对数据类型的要求更加具体化,因此大多数时候都可以使用泛型方法来代替类型通配符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值