java - 当类具有有界类型参数时使用有界通配符

标签 java generics bounded-wildcard bounded-types

假设我有课

public static class A<T extends D> { ... }

和类(class)D有两个类扩展它: BC ,例如

public static class D { ... }
public static class B extends D { ... }
public static class C extends D { ... }

现在,在某个地方,假设我想要一个 A 的数组的,无论是 B -种类或C -种类。 (例如,将 D 类中的函数应用于数组中的所有项目。)

我应该再次约束类型吗?

换句话说:应该选择哪一个选项?

  1. A<?>[] re;

  2. A<? extends D>[] re;

哪一种是最佳实践?

最佳答案

T上限为 D , A<?>只是 A<? extends D> 的简写。它们的含义相同 - 就像 if T是无界的,A<?>将缩写为 A<? extends Object> .

对于这种语法,我不知道有什么最佳实践;我认为这只是编码风格的问题。我更喜欢 A<?>因为它很简洁A<? extends D>立即将上限传达给不熟悉 A 的开发人员。

关于java - 当类具有有界类型参数时使用有界通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20542474/

相关文章:

java - : Lcom/google/android/gms/common/internal/zzbq; 解析失败

typescript - 有没有办法从 TypeScript 中的泛型类型推断泛型类型?

c# - 具有 "has property X"约束的通用函数?

java - 在返回参数中使用通用通配符类型

java - JFrame从一个类到另一个类的内部框架

java - 使用 Jersey 对查询数组参数进行排序

java - Java中Generic类的两种不同特化的比较

java - 什么方法声明接受有界和无界的多级泛型?

java - Java 中的下限是排他性的还是包容性的?

java - 谷歌地图聚类不适用于少量坐标