具有类和接口兼容性的 Java 泛型
在 Java 中,创建具有特定约束的类对象可能具有挑战性。常见的场景是定义一个类对象,该类对象扩展特定类,同时实现特定接口。然而,使用泛型同时实现这两个约束一直是一个常见的争论点。
尝试使用以下语法强制类扩展 ClassA 并实现接口 InterfaceB:
Class<? extends ClassA>
或
Class<? extends InterfaceB>
只能满足一项要求,无法组合
解决方案
幸运的是,Java 泛型允许多个接口或类加接口。要实现此目的,请按如下方式修改通配符声明:
<T extends ClassA & InterfaceB>
如 Sun 的泛型教程中所示,通过为每个附加所需接口附加 & InterfaceName,可以实现任意复杂的组合。例如,Collections#max 的 JavaDoc 声明演示了这种复杂性:
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
保留二进制兼容性需要这些复杂的声明。
类和接口约束的实现
要在变量声明中实现所需的限制,请在变量上放置通用边界class:
class classB { } interface interfaceC { } public class MyClass<T extends classB & interfaceC> { Class<T> variable; }
结论
Java 泛型提供了灵活的方法来创建受约束的类和接口组合。通过了解语法和限制,开发人员可以利用这种能力在代码中强制执行特定要求。
以上是如何使用 Java 泛型组合类和接口约束?的详细内容。更多信息请关注PHP中文网其他相关文章!