加強有界型別引數

有界型別引數允許你設定泛型型別引數的限制:

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> {

}