首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实例化接口CharSequence

实例化接口CharSequence
EN

Stack Overflow用户
提问于 2014-07-04 03:33:56
回答 3查看 681关注 0票数 3
代码语言:javascript
复制
CharSequence[] items = { “Google”, “Apple”, “Microsoft” };

如果CharSequence是一个接口,那么在上面的示例中,我们不是实例化一个接口吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-04 03:37:24

您正在实例化一个String数组,然后将它分配给具有CharSequence数组类型的变量。这是因为String可以分配给(实现) CharSequence。这里还有几个例子:

代码语言:javascript
复制
CharSequence cs = "Whatever";
List<Integer> list = new ArrayList<>();

因此,您实际上正在实例化具体类型,并将它们分配给具有接口类型的变量/字段。

票数 2
EN

Stack Overflow用户

发布于 2014-07-04 03:42:54

下面是一个使用自定义类的类似示例:

代码语言:javascript
复制
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本身。

在您的例子中,类似的事情也是可能的:

代码语言:javascript
复制
CharSequence[] items = {"Google",new StringBuffer("Apple"), new StringBuilder("Microsoft")};
票数 0
EN

Stack Overflow用户

发布于 2014-07-04 03:48:18

CharSequence[]项目={“谷歌”、“苹果”、“微软”};

在这里,只有声明的引用变量类型是一个接口,这是正常的。

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

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

鉴于

CharSequence[] items ={ new someclass() }

哪里

类CharSequence {

//

}

完全没问题

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24566313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档