加強有界型別引數
有界型別引數允許你設定泛型型別引數的限制:
class SomeClass {
}
class Demo<T extends SomeClass> {
}
但是型別引數只能繫結到單個類型別。
介面型別可以繫結到已經具有繫結的型別。這是使用 &
符號實現的:
interface SomeInterface {
}
class GenericClass<T extends SomeClass & SomeInterface> {
}
這加強了繫結,可能需要從多種型別派生型別引數。
可以將多種介面型別繫結到型別引數:
class Demo<T extends SomeClass & FirstInterface & SecondInterface> {
}
但應謹慎使用。多個介面繫結通常是程式碼異味的標誌,表明應該建立一個新型別,它充當其他型別的介面卡:
interface NewInterface extends FirstInterface, SecondInterface {
}
class Demo<T extends SomeClass & NewInterface> {
}