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

在Java中处理未初始化的参数?,java,parameters,initialization,Java,Parameters,Initialization,我正在从另一种语言()调用一个Java方法。有些参数在my R函数中是可选的。在Java方法中处理未初始化参数的最佳方法是什么?(理想情况下不使用异常处理…) 编辑:基于第一个响应的后续行动: "2. Initialize with predefinied defaults and continue" 如何检查某些内容是否未初始化 下面是我希望使用的方法的一些伪代码: public static void test(int i) { if(!is.initialized(i) {

我正在从另一种语言()调用一个Java方法。有些参数在my 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:重载似乎需要很多工作。我宁愿使用一种方法,并用默认值处理每种情况。也就是说,我不是专家,我很想知道这里的最佳实践是什么。

视情况而定

  • 向用户显示一种非正式消息,告诉用户如何正确使用程序并退出
  • 使用预定义的默认值初始化并继续
  • 抛出IllegalArgumentException
  • 无论哪种方式,您都需要清楚地记录它。

    视情况而定

  • 向用户显示一种非正式消息,告诉用户如何正确使用程序并退出
  • 使用预定义的默认值初始化并继续
  • 抛出IllegalArgumentException

  • 无论哪种方法,您都需要清楚地记录它。

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

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

    这只需要一种方法。看到这个了吗


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

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

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

    这只需要一种方法。看到这个了吗


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

    重载不是很多工作。通常,您会执行以下操作:

    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);
    }
    

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

    重载不是一件很麻烦的事情。通常,您会执行以下操作:

    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);
    }
    

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

    Java方法使用varargs还是列出所有预期参数?Java方法使用varargs还是列出所有预期参数?谢谢Greg!这对我来说真的很清楚。我将使用重载。谢谢Greg!这对我来说真的很清楚。我将使用重载。谢谢克里斯!在进一步研究之后,你的第一个建议似乎是最好的。Greg Hewgill也应该得到赞扬,他在你的评论中提到超载似乎是一项艰巨的工作;我想当然地认为你知道如何超载,但你说你不是专家谢谢克里斯!在进一步研究之后,你的第一个建议似乎是最好的。Greg Hewgill也应该得到赞扬,他在你的评论中提到超载似乎是一项艰巨的工作;我想当然地认为你知道如何超载,但你说你不是一个expert@BalusC-我认为这些建议没有意义。他询问的是如何调用Java方法,而不是运行Java应用程序。Java不支持未初始化参数的概念。@BalusC-我认为这些建议没有意义。他询问的是如何调用Java方法,而不是运行Java应用程序。Java不支持未初始化参数的概念。