java泛型约束_Java泛型约束

本文详细介绍了Java中的泛型通配符,包括无限通配符、上边界通配符和下边界通配符。通过示例代码展示了如何使用这些通配符来增强代码的灵活性和安全性,特别是在处理参数化类型时。通配符的使用有助于确保类型安全,并允许更广泛的对象类型兼容性。
摘要由CSDN通过智能技术生成

无限通配符

通配符类型由问号表示,如 > 中所示。对于通用类型,通配符类型为对象类型用于原始类型。

可以将任何已知类型的泛型分配为通配符类型。

参考以下示例代码:

// MyBag of String type

MyBag stringMyBag = new MyBag("Hi");

// You can assign a MyBag to MyBag> type

MyBag> wildCardMyBag = stringMyBag;

通配符通配类型中的问号(例如,>)表示未知类型。当使用通配符声明参数化类型作为参数类型时,这意味着不知道它的类型。

MyBag> unknownMyBag = new MyBag("Hello");

上边界通配符

上边界通配符表示通配符的上限,如下语法

extends T>

这里,T是一种类型。 extends T>表示任何类型为T或其子类是可接受的。

例如,上限可以是数字类型。

如果传递任何其他类型,是Number类型或它的子类,没有问题。 但是,如果不是Number类型或其子类型的任何东西都会在编译时被拒绝。

使用上限作为数字值(Number),可以将方法定义为 -

class MyBag {

private T ref;

public MyBag(T ref) {

this.ref = ref;

}

public T get() {

return ref;

}

public void set(T a) {

this.ref = a;

}

}

public class Main {

public static double sum(MyBag extends Number> n1,

MyBag extends Number> n2) {

Number num1 = n1.get();

Number num2 = n2.get();

double sum = num1.doubleValue() + num2.doubleValue();

return sum;

}

}

不管为n1和n2传递的是什么,它们将始终与Number的赋值兼容,因为编译器确保传递给sum()方法的参数遵循其声明中指定的规则 extends Number> 。

下限通配符

指定下限通配符与指定上限通配符相反。使用下限通配符的语法是 super T>,这表示“任何T的超类型”。

class MyBag {

private T ref;/*from w w w. j ava 2 s .co m*/

public MyBag(T ref) {

this.ref = ref;

}

public T get() {

return ref;

}

public void set(T a) {

this.ref = a;

}

}

public class Main {

public static void copy(MyBag source, MyBag super T> dest) {

T value = source.get();

dest.set(value);

}

}

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值