在Java中处理未初始化的参数?

时间:2009-11-12 02:35:41

标签: java parameters initialization

我正在用另一种语言(R)调用Java方法。我的R函数中的一些参数是可选的。在Java方法中处理未初始化参数的最佳方法是什么? (理想情况下不使用异常处理......)

编辑:根据第一个回复进行跟进:

"2. Initialize with predefinied defaults and continue"

如何检查某些内容是否未初始化?

这是我希望使用的方法的一些伪代码:

public static void test(int i) {
    if(!is.initialized(i) {
        i = 0;
    }
    // Do stuff with i
}

编辑2:重载似乎很多工作。我宁愿有一个方法,并使用默认值处理每个案例。也就是说,我不是专家,我很想知道最佳实践是什么。

3 个答案:

答案 0 :(得分:2)

由于Java不支持默认参数,我建议使用覆盖可选参数的方法的重载版本,尽管取决于你有多少可选参数,这可能会变得混乱。

编辑: 正如评论中所建议的那样,您可以使用varargs收集可变数量的参数,然后包含用于处理方法内的强制参数和可选参数的不同组合的逻辑。

这只需要一种方法。见Varargs documentation

使用varargs,您可以使用与伪代码类似的逻辑。

答案 1 :(得分:2)

重载不是很多工作。通常你会做类似的事情:

public static int test(int i, int j) {
    // detailed processing here
}
public static int test(int i) {
    return test(i, 0);
}
public static int test() {
    return test(0, 0);
}

通过这种方式,您只需要实现一次处理逻辑,然后使用简短的单行方法填充缺少的内容,并将控制权交给执行实际工作的方法。

答案 2 :(得分:1)

取决于

  1. 向用户显示非正式消息的种类,如何正确使用该程序并退出。
  2. 使用预定义的默认值初始化并继续。
  3. 抛出IllegalArgumentException。
  4. 无论哪种方式,您都需要清楚地记录下来。