簡體   English   中英

為什么對對象類型轉換通用的是隱式的?

[英]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返回。

不能保證TString ,所以您必須強制將其強制轉換(如果這樣做並且T不是String則存在運行時異常的風險)。

即使T不是泛型類型,它也可以工作。 自己嘗試!

您總是可以返回一些超級類型的東西,泛型也一樣

每個類ISA Object的每個實例,因此您始終可以將任何引用類型值轉換為Object。 但是只有一個String對象,ISA String。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM