首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象c;然后c=新整数(0);合法吗?

对象c;然后c=新整数(0);合法吗?
EN

Stack Overflow用户
提问于 2019-06-15 14:01:08
回答 1查看 43关注 0票数 0

假设我们有一个变量类型的对象

代码语言:javascript
复制
Object c;

假设我们想通过包装器实例化它。是

代码语言:javascript
复制
c = new Integer(0);

合法?

我认为这是因为对象类型是每个类的“父”,例如Integer是一个包装类(upcast)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-15 14:06:39

是的,具有引用类型(如Object)的变量可以保存对任何与赋值兼容的引用类型的实例的引用。与任务兼容的引用类型如下:

  • 变量自己的引用类型(在您的示例中是Object)。
  • 任何该类型的子类(在您的示例中是Integer,因为IntegerObject的子类)
  • 如果变量的引用类型是接口,则实现该接口的任何类。

有时,代码似乎违反了这些规则,例如:

代码语言:javascript
复制
Object c = 0; // Works just fine

这是因为int 0被自动装箱到Integer实例中,并且该实例的引用存储在c中。

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

https://stackoverflow.com/questions/56611045

复制
相关文章

相似问题

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