扩展和装箱Java原语。
我知道不可能将包装器类从一个扩展到另一个,因为它们不是来自同一继承树。为什么无法将原语扩展为另一种原语类型并自动装箱已扩展的原语?
假定可以将byte参数传递给需要int的方法,为什么不能将以下示例中的字节扩展为int然后装箱为Integer?
class ScjpTest{
static void goInteger(Integer x){
System.out.println("Going with an Integer");
}
static void goInt(int x){
System.out.println("Going with an int");
}
public static void main(String args[]){
byte b = 5;
goInt(b);
goInteger(b);
}
}
在上面的示例中,goInt(b)
被编译器接受但goInteger(b)
被拒绝。
Java语言仅支持某种程度的粗心。
我相信添加了自动装箱功能以支持开发人员的粗心大意。特别是在这样的情况下:“我需要一个整数作为要调用的方法的参数,但是我有一个整数。以某种方式,新的Integer(int)永远不会弹出我的脑海。相反,我只会发送一个整数Java编译器将为我执行新的Integer()调用。谢谢Java粗心支持小组!”
设计自动装箱的人愿意支持1级粗心(int => Integer and
back),但不愿意将较小的原始类型自动转换为较大的原始类型,并与从原始类型包装器类自动创建和提取结合在一起。我怀疑对此的决策矩阵会比当前自动装箱方案的决策矩阵大一些。
问题内容: 考虑这些表达式…请耐心等待…这是一个很长的清单… (注意:有些表达式是重复的-只是为了表示一个“上下文”) 你如何理解这种复杂性和混乱性。手工计算表达式的结果时,如何总是对的。或者,当阅读其他人的代码时,我应该只是忽略它们,而从不试图理解表达式的实际作用吗? 问题答案: 对于这篇文章的篇幅,我深表歉意,但我决定选择完整性。 一旦你了解了一些基本规则,就不难概括它们。我将尽力举例说明。由
主要内容:装箱和拆箱,包装类的应用在 Java 的设计中提倡一种思想,即一切皆对象。但是从数据类型的划分中,我们知道 Java 中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为每种基本数据类型分别设计了对应的类,称之为 包装类(Wrapper Classes),也有地方称为外覆类或数据类型类。 包装类和基本数据类型的关系如下表所示。 基本数据类型及对应的包装类 序号 基本数据类型
本文向大家介绍C#装箱和拆箱原理详解,包括了C#装箱和拆箱原理详解的使用技巧和注意事项,需要的朋友参考一下 .NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种传递参数和赋值的通用方法。赋给object的值必须作为引用类型,并存放砸托管堆中。 装箱: int age = 24; object refAge= a
个人扩展文件夹 VS Code 会在个人扩展文件夹中.vscode/extensions来寻找扩展组件。不同的平台其文件夹所在的位置也不同: Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions Linux ~/.vscode/extensions 如果你想在VS Code 每次启动都能够加载你自己的扩展或者定制化信息,
Swoole扩展 到GitHub首页下载Swoole扩展源码,地址:https://github.com/swoole/swoole-src 下载后按照标准的PHP扩展编译方式进行编译和安装。一般是 phpize ./configure make install 编译安装完后,修改php.ini加入extension=swoole.so开启swoole扩展。也可以通过dl('swoole.so'
问题内容: 我想将原语转换为字符串,然后尝试: 失败并显示以下错误: 现在,我知道原语不是引用类型(即不是对象),因此不能有方法。但是,Java 5引入了自动装箱和拆箱功能(一种C#…我在C#中从未喜欢过,但这不重要)。因此,通过自动装箱,我希望上面将myInt转换为Integer,然后在其上调用toString()。 此外,我相信C#允许这样的调用,除非我记错了。这仅仅是Java的自动装箱/拆箱