編寫名爲MyType的泛型類的標頭。該類應該有 有兩個類型參數。第一個類型參數的上限 應該是Number類。第二個類型參數的上限 應該是String類。類有兩個類型參數都有一個字符串和數字的上限:Java
會看起來像這樣正確嗎?
public class MyType<T extends Number> {}
我該如何去獲得第二個類型參數作爲上限?我可以只擴展Number extends String嗎?
編寫名爲MyType的泛型類的標頭。該類應該有 有兩個類型參數。第一個類型參數的上限 應該是Number類。第二個類型參數的上限 應該是String類。類有兩個類型參數都有一個字符串和數字的上限:Java
會看起來像這樣正確嗎?
public class MyType<T extends Number> {}
我該如何去獲得第二個類型參數作爲上限?我可以只擴展Number extends String嗎?
聲明是這樣
public class TestThis <T extends Number, X extends String> {}
你x延伸字符串作品,請記住,String是一個final類,你不能對它進行擴展。 Eclipse給了我這個警告:
類型參數X不應該被最終類型String限制。最終類型不能進一步擴展
您誤解了問題:它要求您爲類提供兩個類型參數,每個參數都帶有一個邊界,而不是一個帶有兩個邊界的類型參數。
例如這個類有兩個類型參數T
和U
:
public class MyType<T, U> { }
我把它留給你
的
其他答案添加的範圍。
編輯:請注意,如果你想在單一類型參數的多個上限,您可以使用&
分隔它們:
<T extends B1 & B2 & B3>
但由於Java沒有多重繼承,附加上限只能是接口。這裏,B1
可以是類或接口,而B2
和B3
必須是接口(參考:Java Tutorials)。
我該如何去獲取第二個類型參數作爲上限?我可以只擴展Number extends String嗎?
您可以通過添加像,
分開的第二個參數:
public class MyType<T extends Number, S extends String> {
}
雖然它看起來奇怪,因爲String是一個final類,但你仍然可以擴展它的上限。
聲明看起來像:
MyType<Long,String> myType = new MyType<Long, String>();
如果A
有上限的B
,這意味着A extends B
。因此,您的聲明應該是這樣的:
public class MyType<T extends Number, U extends String> {
...
}
你被要求有兩種類型參數(不只是一個如您目前擁有),因此T
和U
以上。 但我應該注意:String
是final
,因此沒有類型U
可以是String
的擴展(儘管U
仍然可以是String
)。
在這種情況下,'S擴展String'與'String'有什麼不同? –
不是。從技術上講,我寧願'String'而不是'S extends String' – SiB