📜  Java泛型-下界通配符(1)

📅  最后修改于: 2023-12-03 15:16:36.026000             🧑  作者: Mango

Java泛型-下界通配符

Java泛型中,下界通配符的作用是用来限制参数化类型的下限,即只能传递一些指定的类或其子类作为参数,而不能传递其他任何类型的参数。

下界通配符的语法

下界通配符使用 super 关键字来实现,具体语法如下所示:

<? super 类名> 泛型变量名;

其中,? super 表示要求参数化类型的下界是指定类的超类,类名 是指定的类名或接口名,泛型变量名是任意的标识符,用于表示参数化类型中的类型参数。

下界通配符的使用方式

下界通配符的使用方式有两种,分别是:

  1. 作为方法的形参类型使用
  2. 作为方法的返回值类型使用
使用方式一:作为方法的形参类型使用

可以在方法定义时使用下界通配符作为形参类型,这样就限制了传入的参数只能是指定类或其子类的实例,例如:

public void testAdd(List<? super Integer> list, Integer num) {
    list.add(num);
}

在上面的示例代码中,我们定义了一个名为 testAdd 的方法,该方法的第一个参数是一个 List<? super Integer> 类型的列表,第二个参数是一个 Integer 类型的整数,方法的作用是将整数添加到列表中。

由于我们使用了下界通配符 super,因此只能传递 Integer 类型或其父类(如 NumberObject 等)的实例作为第一个参数,而不能传递 FloatDouble 等其他类型的实例。

使用方式二:作为方法的返回值类型使用

下界通配符也可以作为方法的返回值类型使用,这样就可以返回指定类或其子类的实例,例如:

public List<? super Integer> testGet() {
    List<? super Integer> list = new ArrayList<>();
    list.add(new Integer(100));
    return list;
}

在上面的示例代码中,我们定义了一个名为 testGet 的方法,该方法的返回值类型是 List<? super Integer>,方法的作用是创建一个 List 列表并添加一个 Integer 类型的整数,最后将该列表作为方法的返回值。

由于我们使用了下界通配符 super,因此该方法的返回值只能是 List<Integer>List<Number>List<Object> 等类型的列表,而不能是 List<Float>List<Double> 等其他类型的列表。

下界通配符的注意事项

在使用下界通配符时,还需注意以下几点:

  1. 下界通配符只能用于泛型类或泛型接口的实例化。
  2. 在使用下界通配符创建泛型实例时,必须显式地传递下限类或其子类的实例。
  3. 在使用下界通配符访问泛型实例时,只能使用 Object 类型。
  4. 在使用下界通配符将泛型实例传递给其他方法时,必须通过类型转换将其转换为具体类型。
总结

下界通配符是 Java 泛型中一种重要的语法特性,通过使用下界通配符,可以限制参数化类型的下限,有效地减少类型转换的错误,并提高代码的可读性。在实际的项目开发中,建议开发人员多学习并使用下界通配符,以提高代码的健壮性和可靠性。