2014-07-04 96 views
2
CharSequence[] items = { 「Google」, 「Apple」, 「Microsoft」 }; 

如果CharSequence是一個接口,那麼在上面的例子中我們是不是在實例化一個接口?實例化接口CharSequence

+0

您到** **類型由接口定義的數組指派初始值。 –

回答

1

您正在實例化一個String數組,然後將其分配給具有CharSequence數組類型的變量。這是可行的,因爲String可分配給(執行)CharSequence。這裏有幾個例子:

CharSequence cs = "Whatever"; 
List<Integer> list = new ArrayList<>(); 

所以你實際上是實例化的具體類型,並將其分配給一個變量/場有一個接口類型。

0

下面是使用自定義類的類似示例:

interface A{} 

class A1 implements A{} 

class A2 implements A{} 

class A3 implements A{} 

public class B { 

    A[] items = {new A1(),new A2(), new A3()}; 

} 

在這裏,在items每個對象的實際類型執行(A1,A2,A3),而不是A本身的是。

在您的例子類似,這也將是可能的:

CharSequence[] items = {"Google",new StringBuffer("Apple"), new StringBuilder("Microsoft")}; 
-1

的CharSequence []項目= {「谷歌」,「蘋果」,「微軟」};

這裏只有聲明的參考變量的類型是一個接口,這是正常的。

但是數組中的對象是String對象 - 其類實現了CharSequence接口。

說,的CharSequence []項= {新的CharSequence()}會導致編譯錯誤

的CharSequence []項= {新SomeClass的()}

其中

class someclass implements CharSequence {

//

}

是完全細

+0

我能否請知道負面標記的原因? – user3790568

+0

只是一個猜測,但它可能是文本的格式 –

+0

但誰會投票呢?他們爲什麼沉默?這個答案沒有幫助或不正確? – user3790568