java - "exploit"java 按值调用是否明智

标签 java methods pass-by-reference

考虑以下情况。用户可以输入类似的内容 30D、90D、180D、360D、1M、3M、6M、12M、1Y (D=日,M=月,Y=年)。

我想用以下两种方法计算月数。

    private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
        int periodInMonths = lengthOfPeriod;
        if ("D".equals(unitOfPeriod)) {
            periodInMonths = lengthOfPeriod / 30;
        } else if ("Y".equals(unitOfPeriod)) {
            periodInMonths = lengthOfPeriod * 12;
        }
        return periodInMonths;
    }

    private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
        if ("D".equals(unitOfPeriod)) {
            lengthOfPeriod = lengthOfPeriod / 30;
        } else if ("Y".equals(unitOfPeriod)) {
            lengthOfPeriod = lengthOfPeriod * 12;
        }
        return lengthOfPeriod;
    }

因为 java 使用按值调用,并将引用作为值传递 lengthOfPeriod在方法之外不会改变。我不确定使用什么更合适。

我知道这个方法可以通过使用枚举 Periods 来重构或类似的东西。但我们不在这里讨论这个。

最佳答案

分配给方法参数不是一个好主意(恕我直言,默认情况下它们应该是最终的)。如果您确实想避免额外的变量(并不是说它真的有什么区别),您可以将 return 放在 if 子句中。

但不要将参数用作“自动局部变量”。它可能会导致很难发现错误,并且不会提高您的代码的性能。

关于java - "exploit"java 按值调用是否明智,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36495861/

相关文章:

c++ - 如何将float值传递给以double为引用值的函数

c - 当我尝试使用函数中通过引用传递的预分配矩阵读取值时出现段错误

java - 从库返回 Java Future 的最佳实践

java - Spring 应用程序中的实用程序类 - 我应该使用静态方法吗?

java - Netty配置中的child.connectTimeoutMillis是什么意思?

java - Java中迭代父类ArrayList时使用子类方法

jquery - 虚构的jQuery持久方法

C++ 没有已知参数 1 从 ‘Node*’ 到 ‘Node*&’ 的转换

java - 如何从 eclipse-plugin 中的代码中选择 TreeView 节点

java - StyledText 可见行数