簡體   English   中英

arrays.aslist添加派生類java

[英]arrays.aslist adding derived class java

所以我有這個:

class A{}
class B extends A {}
class C extends B {
    public String toString(){ return new String("C"); } 
    }
class D extends B {
    public String toString(){ return "D"; } 
    }

然后在主要

List<A> list = Arrays.asList(new C(), new D());
        for (A a : list) {
            System.out.println(a.toString());
        }

我可以編譯此代碼,然后將其打印:CD,但在我朋友的計算機上將無法編譯。 它必須處理我正在使用的Java版本嗎?

那就對了。 您的朋友使用Java 7時,您必須使用Java 8進行編譯。

在Java 7中,由返回的List的類型

Arrays.asList(new C(), new D());

將被推斷為List<B>並且List<B>無法分配給List<A>

在Java 8中,使用一些更聰明的泛型,編譯器將為同一表達式List<A>推斷不同的類型。

您可以使用顯式類型參數更正Java 7版本

Arrays.<A>asList(new C(), new D());

暫無
暫無

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

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