16

我当前的项目有这样的编码约定,即实例变量永远不会被 this 引用。前缀,并且参数永远不应该隐藏实例变量。

这导致设置器看起来像:

public void setFoo(final Foo aFoo)
{
  foo = aFoo;
}

不幸的是,eclipse默认不会为我生成那个。我发现在代码样式中,我可以通过在参数前缀列表中添加 a 来接近它,但是我只希望它应用于 set 方法,并且我也想在那里添加最终标记。

有没有办法使用模板来实现这一点?其他一些配置?

4

4 回答 4

19

我认为目前仅对 setter 方法应用参数前缀的唯一方法是为 setter 方法编写一个新模板,但访问器生成器不会使用此模板。您可以在Window -> Preferences -> Java -> Editor -> Templates下看到现有模板的列表,有关创建模板的一些提示,请参阅此问题。

您可以修改 Eclipse 设置以在工作区或项目级别为所有类型的变量指定前缀(和后缀),但这将适用于所有方法,而不仅仅是 setter。您可以使用“清理”功能来确保您的参数是最终的。

为了满足您的代码约定,您可以指定所有实例变量都带有前缀,这样您的参数就不会覆盖实例变量,但您可能不想这样做。


变量前缀

要修改工作区设置,请转到Window -> Preferences -> Java -> Code Style,然后编辑列表以使用您的首选前缀/后缀。

要修改项目设置,请打开项目属性 ( Alt+ Enter),然后选择Java Code Style,选择Enable project specific settings,然后编辑工作区的首选项。

要仅为 setter 方法启用特定前缀,您必须深入研究代码模板的内部以识别和修改 setter


最终参数

为确保所有方法参数都是最终的,您可以修改 Java 清理处理器以将最终添加到参数中。在Window -> Preferences -> Java -> Code Style -> Clean Up下,您可以复制或编辑 Active Profile。在代码样式选项卡下,尽可能在变量声明部分中选择使用修饰符“final”,然后确保选择了参数运行Source -> Clean Up时将应用清理

要在每次保存时自动应用最终参数,您可以修改保存操作,在Window->**Preferences -> Java -> Editor -> Save Actions下,确保选中在保存框上执行所选操作(这也将格式化您的代码并根据需要组织导入),选择Additional Actions选项,然后选择Configure,然后在Code Style下应用与上述相同的

于 2009-08-18T08:54:16.033 回答
2

非常简单...

  1. 在您的项目中,在根项目文件夹下,创建一个名为.settings(它可能已经存在)的文件夹。
  2. 在此文件夹中,创建一个名为org.eclipse.jdt.core.prefs
  3. 在此文件中,包括以下行:

org.eclipse.jdt.core.codeComplete.argumentPrefixes=a

就是这样,你完成了。它应该可以工作。我找不到合适的文档,但这里有一些您可以设置的其他选项:

org.eclipse.jdt.core.codeComplete.argumentPrefixes= org.eclipse.jdt.core.codeComplete.argumentSuffixes= org.eclipse.jdt.core.codeComplete.fieldPrefixes= org.eclipse.jdt.core.codeComplete.fieldSuffixes= org.eclipse.jdt.core.codeComplete.localPrefixes= org.eclipse.jdt.core.codeComplete.localSuffixes= org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=

于 2009-08-18T06:02:55.910 回答
0

您可以使用Fast Code Eclipse Plugin轻松完成此操作。

于 2011-08-07T02:50:41.770 回答
0

Eclipse --> 首选项 --> Java --> 代码样式 --> 代码模板 --> 代码

于 2013-12-24T17:57:54.753 回答