CharSequence[] items = { 「Google」, 「Apple」, 「Microsoft」 };
如果CharSequence
是一個接口,那麼在上面的例子中我們是不是在實例化一個接口?實例化接口CharSequence
CharSequence[] items = { 「Google」, 「Apple」, 「Microsoft」 };
如果CharSequence
是一個接口,那麼在上面的例子中我們是不是在實例化一個接口?實例化接口CharSequence
您正在實例化一個String
數組,然後將其分配給具有CharSequence
數組類型的變量。這是可行的,因爲String
可分配給(執行)CharSequence
。這裏有幾個例子:
CharSequence cs = "Whatever";
List<Integer> list = new ArrayList<>();
所以你實際上是實例化的具體類型,並將其分配給一個變量/場有一個接口類型。
下面是使用自定義類的類似示例:
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")};
的CharSequence []項目= {「谷歌」,「蘋果」,「微軟」};
這裏只有聲明的參考變量的類型是一個接口,這是正常的。
但是數組中的對象是String對象 - 其類實現了CharSequence接口。
說,的CharSequence []項= {新的CharSequence()}會導致編譯錯誤
而
的CharSequence []項= {新SomeClass的()}
其中
class someclass implements CharSequence {
//
}
是完全細
我能否請知道負面標記的原因? – user3790568
只是一個猜測,但它可能是文本的格式 –
但誰會投票呢?他們爲什麼沉默?這個答案沒有幫助或不正確? – user3790568
您到** **類型由接口定義的數組指派初始值。 –