unboxing相关内容

为什么我不能将 int 拆箱为小数?

我有一个 IDataRecord 阅读器,我正在从中检索小数点,如下所示: 十进制 d = (decimal)reader[0]; 由于某种原因,这会引发一个无效的转换异常,指出“指定的转换无效". 当我执行 reader[0].GetType() 时,它告诉我它是一个 Int32.据我所知,这应该不是问题...... 我已经通过这个片段测试了它,效果很好. int i = 37 ..
发布时间:2022-01-14 14:04:47 C#/.NET

取消装箱空盒装对象会引发意外的 NullPointerException

如果你运行下面的代码, 公共类Foo{公共静态无效主(字符串 [] args){int id = new Bar().getId();//抛出意外的 NullPointerException}私有静态类 Bar{私有最终整数 ID;公共酒吧(){这(空);}公共栏(整数 ID){this.id = id;}公共整数 getId(){返回标识;}}} 您将获得以下堆栈跟踪, 线程“main"中 ..
发布时间:2022-01-05 21:24:54 Java开发

Java 6 与 Java 7 之间自动拆箱的差异

我注意到 Java SE 6 和 Java SE 7 之间自动拆箱行为的不同.我想知道为什么会这样,因为我找不到关于这两个版本之间这种行为变化的任何文档. 这是一个简单的例子: Object[] objs = new Object[2];objs[0] = new Integer(5);int myInt = (int)objs[0]; 使用 Java SE 7 中的 javac 可以很 ..
发布时间:2021-12-31 21:44:12 Java开发

装箱/拆箱和类型转换有什么区别?

装箱/拆箱和类型转换有什么区别? 通常,这些术语似乎可以互换使用. 解决方案 装箱是指将不可空值类型转换为引用类型或将值类型转换为它实现的某个接口(比如 int 到 IComparable).此外,底层值类型到可为空类型的转换也是一种装箱转换.(警告:关于这个主题的大多数讨论都会忽略后两种类型的转换.) 例如 int i = 5;对象 o = i; 将 i 转换为 obje ..
发布时间:2021-12-31 21:39:29 C#/.NET

带有“as"的性能惊喜和可空类型

我只是在修改 C# 中处理可空类型的第 4 章,我正在添加一个关于使用“as"运算符的部分,它允许您编写: object o = ...;内部?x = o 作为 int?;如果(x.HasValue){...//在这里使用 x.Value} 我认为这真的很巧妙,它可以提高 C# 1 等效项的性能,使用“is"后跟强制转换 - 毕竟,这样我们只需要请求一次动态类型检查,然后简单的值检查. ..
发布时间:2021-12-08 11:27:15 C#/.NET

Java 中的自动装箱/拆箱是如何工作的?

自 JDK 5.0 起,Java 中引入了自动装箱/拆箱.这个技巧很简单而且很有帮助,但是当我开始测试包装类和原始类型之间的不同转换时,我真的很困惑自动装箱的概念在 Java 中是如何工作的.例如: 拳击 int intValue = 0;整数 intObject = intValue;字节字节值 = 0;intObject = byteValue;//==>错误 尝试不同的情况(sho ..
发布时间:2021-11-25 15:20:48 Java开发

为什么 Java 编译器有时会允许对 null 进行拆箱?

例如: int anInt = null; 在编译时失败,但是 public static void main(String[] args) {for (int i = 0; i 在运行时失败(通常).尝试只返回 null 也会导致编译错误,所以我假设有多个路径会导致编译器推断 null 可能是一个自动装箱 整数?javac为什么不能编译两种情况都出现同样的错误? 解决方案 在第 ..
发布时间:2021-11-22 16:35:41 Java开发

自动装箱/拆箱在Java中如何工作?

自JDK 5.0起,在Java中引入了自动装箱/拆箱.这个技巧很简单而且很有帮助,但是当我开始测试包装器类和原始类型之间的不同转换时,我真的很困惑自动装箱的概念在Java中是如何工作的.例如: 拳击 int intValue = 0; Integer intObject = intValue; byte byteValue = 0; intObject = byteValue; // ..
发布时间:2021-02-09 21:13:31 Java开发

为什么“如果让我们"似乎没有像以前在Xcode 8.3 beta中的Swift 3中那样取消装箱值?

与以前不同,我很惊讶地看到'title'现在是可选的(编译器现在生成减弱的功能:字符串插值为可选值生成调试描述;您的意思是使它显式吗?). 为什么"if let title ="表达式不再将其取消装箱? 我应该怎么做才能在if中拆箱? // Go thru all publication where the tag has been found for item in items { ..
发布时间:2020-07-12 18:34:32 移动开发

Java 7是否允许从Number强制转换为double? (自动装箱)

同事检查了以下代码: Number n = ...; double nr = n == null ? 0.0 : (double) n; 然后另一个同事抱怨说这没有编译,这就是我所期望的.但是,事实证明,我已经从SVN中提取了此代码,并且一切正常.我们所有人的eclipse的Java版本都设置为1.7,结果证明该代码在eclipse 4.4.2(Luna)下可以正常编译, ..
发布时间:2020-07-12 18:34:28 Java开发

使用out和ref参数时的装箱和拆箱

当方法接受ValueType的out/ref参数时,装箱/拆箱会发生吗? 解决方案 对于ref关键字 不要混淆按引用传递的概念与引用类型的概念.这两个概念并不相同.可以通过ref修改方法参数,而不管它是值类型还是引用类型.通过引用传递时,没有值类型的装箱. 关于out关键字: out 关键字使参数通过引用传递. 类似于 ref 关键字,除了ref要求在传递变量之前先对其进行初 ..
发布时间:2020-07-12 18:33:25 C#/.NET