[英]Why generic to object type-casting is implicit?
在將非泛型類轉換為泛型類時,我看到了這一工作:
public class TestException<T>
{
T t;
Object getObj(){
return t;
}
}
當我嘗試將return類型從Object更改為任何其他String
,我必須鍵入cast:
String getObj(){
return (String)t;
}
為什么通用的對象類型轉換是隱式的? 在Java文檔上找不到任何實現。
每個類都繼承Object
,因此T
保證可以隱式轉換為Object
。
由於您的通用類型T
是未綁定的,因此它獲得隱式綁定T extends Object
。 這意味着可以將它作為Object
返回。
不能保證T
是String
,所以您必須強制將其強制轉換(如果這樣做並且T
不是String
則存在運行時異常的風險)。
即使T不是泛型類型,它也可以工作。 自己嘗試!
您總是可以返回一些超級類型的東西,泛型也一樣
每個類ISA Object的每個實例,因此您始終可以將任何引用類型值轉換為Object。 但是只有一個String對象,ISA String。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.