如何修改Eclipse自动生成的set方法签名?

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

这导致setter看起来像:

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

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

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

我认为目前仅为setter方法应用参数前缀的唯一方法是为setter方法编写一个新模板,但访问器生成器不会使用此模板。 您可以在窗口 – > 首选项 – > Java – > 编辑器 – >模板下查看现有模板的列表,有关创建模板的一些提示,请参阅此问题 。

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

为了安抚你的代码约定,你可以指定所有实例变量都是前缀,这样你的参数就不会覆盖实例变量,你可能不想这样做。


变量前缀

要修改工作区设置,请转到窗口 – > 首选项 – > Java – > 代码样式 ,然后编辑列表以使用首选前缀/后缀。

要修改项目设置,请打开项目属性( Alt + Enter ),然后选择Java代码样式 ,选择启用项目特定设置 ,然后编辑工作区的首选项。

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


最终参数

要确保所有方法参数都是最终的,您可以修改Java清理处理器以将final添加到参数中。 在窗口 – > 首选项 – > Java – > 代码样式 – > 清理下 ,您可以复制或编辑活动配置文件。 在“ 代码样式”选项卡下,在“ 变量声明”部分中选择“尽可能使用修饰符’最终’ ,然后确保选择参数 。 运行“ 源” – >“ 清理”时将应用“ 清理”

要在每次保存时自动应用最终参数,您可以修改保存操作,在窗口 – > **首选项 – > Java – > 编辑器 – > 保存操作下 ,确保选中“在保存时执行选定的操作”框(这也将格式化)如果你愿意,你的代码和组织导入),选择Additional Actions选项,然后选择Configure ,然后在Code Style下 ,应用与上面相同的内容

非常简单…

  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=

您可以使用快速代码Eclipse插件轻松完成此操作。

Eclipse – > Preferences – > Java – > Code Style – > Code Templates – > Code