gpt4 book ai didi

java - 在编译时捕获拆箱和自动装箱问题的策略是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:50 28 4
gpt4 key购买 nike

我正在编辑此问题以将其与 this one 区分开来,并删除可怕的“为什么?”

如果我有一个返回 java 对象 Integer 的 java 方法,则 java 编译器允许我将其分配给原始 int。这似乎是在寻找运行时问题。 IE。如果整数为空怎么办?

public class SomeClass {
private Integer someIntegerObject;

public Integer getSomeIntegerObject() {
return this.someIntegerObject;
}
}

SomeClass someClass = new SomeClass();
//much later...
int someIntegerPrimative = someClass.someIntegerObject();

如果 someIntegerObject 被设置为 null,这将在运行时爆炸,但它似乎很容易在编译时被捕获。

此功能称为“拆箱”,其反义词是“自动装箱”。它旨在节省开发人员的时间和可读性,无需手动拆箱。

问题是:在编译时捕获潜在问题的最佳策略是什么?

最佳答案

JRE/Compiler 会做一些称为自动拆箱的事情 - 旨在节省开发人员在进行此类 Activity 时的时间。

Autoboxing is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an int to an Integer, a double to a Double, and so on. If the conversion goes the other way, this is called unboxing.

https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

编辑:您可能想要 read this重新表达您对空对象的看法 - 看起来会抛出运行时错误 NullPointerException,但您可以设置大多数 IDE 以在编译时警告自动拆箱以帮助您:

a) 确保您有正确的异常处理;

b) 确保你根本不依赖行为(总是调用方法来获取原始值)

关于java - 在编译时捕获拆箱和自动装箱问题的策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37351132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com