我正在尝试创建一个递归方法(函数)。此方法处理另一个类的对象,其中每个实例都有3个Integer字段。 (整数var1,var2,var3;)。我想知道是否存在“变量可能尚未初始化”的异常或错误,因此在这种情况下该方法将停止。起初,我认为它会抛出nullPointerException,因为它是一个对象,但是解包会自动生效。有什么解决方案吗? (我知道这是一个编译错误......)
答案 0 :(得分:0)
您可以在该方法的外部范围内使用虚拟/临时值初始化所有三个变量,然后使用传递给方法的任何内容覆盖它们。例如:
Integer myVar1 = 0;
Integer myVar2 = 0;
Integer myVar3 = 0;
public static void yourMethod(Integer var1, Integer var2, Integer var3) {
try {
myVar1 = var1;
myVar2 = var2;
myVar3 = var3;
... your code
catch(NullPointerException ex) {
// handling error code
}
}
答案 1 :(得分:0)
一种方法可能是在使用它之前检查它是否是类类型的实例。请考虑以下事项:
Integer x = null;
Integer y = new Integer(0);
if(x instanceof Integer)
System.out.println("x is initialized.");
else
System.out.println("x is NOT initialized.");
if(y instanceof Integer)
System.out.println("y is initialized.");
else
System.out.println("y is NOT initialized.");
输出结果为:
x未初始化。
y已初始化。