java - 何时使用或如何在泛型中使用多重边界

我是新来的泛型和学习泛型从听说
https://docs.oracle.com/javase/tutorial/java/generics/bounded.html
我正在学习多重界限
我的理解是你可以指定如下的类

class D <T extends A & B & C> { /* ... */ }
D<A> d = new D<>();

只有当a同时实现b和c时
其他明智的编译时错误将导致
另外B和C应该是接口,否则//interface会出现编译时错误
我不是说通配符
我的问题是我没有得到任何真正的程序使用这个。
我正在寻找一种方法/示例,如何在编码时使用多个绑定泛型。
我应该什么时候用?
谢谢

最佳答案

请考虑以下片段:

class SpineWarmCollection <T extends Vertebrate & Warmblooded> { /* ... */ }

class Mammal extends Vertebrate implements Warmblooded {}

class Bird extends Vertebrate implements Warmblooded {}

class Reptile extends Vertebrate {}

SpineWarmCollection<Mammal> mammalCollection = new SpineWarmCollection<>();

SpineWarmCollection<Bird> birdCollection = new SpineWarmCollection<>();

SpineWarmCollection<Reptile> reptileCollection = new SpineWarmCollection<>(); // Generates a compile error, since Reptiles are not warmblooded.

脊椎动物是动物分类中的一类;然而,温血性是一个特征。由于哺乳动物和鸟类都是温血动物,所以温血动物没有单一的祖先类别,但它们的共同祖先脊椎动物却不是。
由于t只能是扩展脊椎动物和warmblooded的类,因此泛型可以访问脊椎动物和warmblooded中声明的任何方法。
你甚至不需要上课。t只能扩展接口,这将允许实现接口的任何类集使用泛型,即使这些类集彼此完全无关。

本文翻译自 https://stackoverflow.com/questions/40070574/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java generics multiple-bounds


相关文章:

java - 对复选框使用流布局

java - 如何使用Datepicker对话框拖动不同的EditText

java - 线程“ main”中的异常java.net.NoRouteToHostException:主机没有路由

java - 我可以设置进度对话框的尺寸(宽度)吗?

java - 具有泛型的泛型

c# - 如何使用C#泛型将这三种方法合而为一?

c# - 定义嵌套的无界泛型类型

java - 具有泛型参数的静态字段可扩展多种类型