【发布时间】:2021-02-06 12:41:25
【问题描述】:
我将“final”关键字用于方法参数,例如 C/C++ 中的“const”关键字,即使它在 JAVA 中的含义与 C/C++ 中的含义不是 100% 相同。我这样做主要是为了轻松区分输入参数和输出参数。喜欢这里:
interface Test
{
public void myMethod(final int input1, final float input2, SomeResults output);
}
当我创建接口(或抽象类)的实现并让 eclipse 生成重载方法时,eclipse 将省略所有“最终”关键字,这真的很糟糕。 Java-Editor 设置的 SaveActions-Part 中有一个选项,但我可以强制 eclipse 在任何可能的地方使用“final”,这绝对不是我的意图。如何强制 Eclipse 不忽略接口方法或抽象方法中的“最终”关键字,并将它们放在实现和子类的生成方法存根中?
【问题讨论】:
-
它不仅与 const “不是 100% 相同”,而且差异更大。作为调用者,它实际上根本没有给你额外的保证。它唯一阻止的是在方法中重新分配参数,但这对调用者来说是不可见的。
-
另外,请注意,无论如何,原语总是按值传递:stackoverflow.com/questions/40480/…(引用也是如此,但这不太明显)
-
另请注意,在 Java 中使用 out-parameters 并不是真正的习惯用法,尤其是对于
void函数 - 为什么不使用返回值? -
如前所述,我使用“final”关键字只是为了阐明参数是“纯输入”变量。我知道原语将始终按值传递。