繁体   English   中英

实例化接口CharSequence

[英]Instantiating a interface CharSequence

CharSequence[] items = { “Google”, “Apple”, “Microsoft” };

如果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 [] items = {“ Google”,“ Apple”,“ Microsoft”};

这里只有引用变量的声明类型是接口,可以。

但是数组中的对象是String对象-其类实现CharSequence接口。

假设CharSequence [] items = {new Charsequence()}将导致编译错误

CharSequence []项目= {新的someclass()}

哪里

类someclass实现CharSequence {

//

}

完全可以

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM