我是泛型的新手,正在从 hear 学习泛型 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 其他方式//interface is expeced compile time error will occurs
我说的不是通配符
我的问题是我没有真正使用它进行编程。 我正在寻找一种方法/示例,说明如何在编码时使用多个绑定(bind)泛型。
我应该什么时候使用它?
谢谢
最佳答案
考虑以下片段:
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 只能是扩展 Vertebrate 和 Warmblooded 的类,泛型可以访问 Vertebrate 和 Warmblooded 中声明的任何方法。
您甚至不需要上课。 T 只能扩展接口(interface),这将允许实现接口(interface)的任何类集使用泛型,即使这些类集彼此完全无关。
关于java - 何时使用或如何在泛型中使用 Multiple Bound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40070574/