有没有任何解决方案我可以打破一个运行的方法,该方法应该返回int[]
或其他什么,但没有!任何回报值。
我认为这可能会有一些例外,但我找不到一个方法。更具体一点,我想要一些东西,试图找出一个对象的某个字段是否被设置,如果是,则返回它,如果没有返回一条消息,告诉我输入到目前为止没有。
像这样的东西:
public int[] returnArray(){
if(array_was_set==true) return the array;
else show message that it wasnt set and quit the method without any return value;
}
答案 0 :(得分:2)
这样做的一种方法是,返回null并让调用者决定,如果调用者得到一个nun-null(或者可能是非空)数组,它将以某种方式处理它,如果调用者得到一个空或null数组它可以打印一条消息。
我建议不要使用异常作为返回值的替代,请参阅此question以了解有关何时抛出异常的更多信息。
答案 1 :(得分:2)
有三种选择可供选择,具体取决于您的情况:
编辑:另外两个选项:
返回一个定义为:
的常量值,而不是返回null静态最终NO_RESULT = new int [0];
稍后您可以检查返回的值(使用==条件)。
答案 2 :(得分:1)
你应该可以通过提出异常来做到这一点。只需在异常的构造函数中使用该消息。
但是,异常是相对昂贵的,如果这不是一个真正的错误条件,你应该考虑做其他事情,比如返回null表示没有什么可以返回。
答案 3 :(得分:0)
是更好的方法是使用Exception
例如
public static void main(String[] args) {
try {
new Result().returnArray(false) ;
} catch (Exception e) {
}
}
public int[] returnArray(boolean input) throws Exception {
if(input) {
return new int[]{1};
}
else {
System.out.println("Not match");
throw new Exception();
}
}
答案 4 :(得分:-2)
当您在方法签名中声明它正在返回数据类型时,它必须具有返回该特定类型值的return语句。否则你将得到编译时错误。 当一个方法可以避免return语句时,即使它有返回类型,唯一的例外是当存在无限循环或抛出异常时。否则返回声明是强制性的。 提出您的问题,您可以轻松实现您的目标。如果你想根据你的要求在特定点终止,只需说, return null;
它适用于除基本类型之外的所有数据类型,在这种情况下,您需要适当地对Wrapper类类型进行类型转换。
public int[] returnArr() {
if(some condition)
return SomeIntArray;
else
return null;
}
public int returnInt() {
if(some condition)
return 2;
else
return (Integer)null;
}