intellij-idea - 有没有办法将 IDEA "malformed format string"意图应用于自定义方法?

标签 intellij-idea intellij-idea2017

编写表单代码时:

String.format("blah %s %s", value1);

IntelliJ 将警告格式模式和实际参数的数量不匹配:格式字符串的参数太少(找到:1,预期:2)

有没有办法将此逻辑应用于自定义方法? 例如:

/** @see String#format(String, Object...) */
public String myMethod(String msg, Object... args){
  return String.format("blah " + msg, args);
}
...

myMethod("%s %s", value1);

我希望 IDEA 告诉我我搞砸了。

如示例中所示,我已经记录了这些委托(delegate)给 String.format() 的方法。

理想情况下,我宁愿避免复制该文档 - 尽管我愿意将其转换为自定义格式,或者可能是注释(最好不是 IDEA 注释)。

最佳答案

Stephen Friedrich 的回答指出了正确的方向,但截图不足以理解如何使用该功能。以下是如何让它工作的更详细的说明:

  1. 在“其他格式化程序类”框中,您可以输入您创建的任何包含自定义 format() 方法的自定义类。因此,在 OP 的情况下,如果他们的 myMethod() 方法属于某个 com.acme.MyClass 类,那么他们将进入 com.acme.MyClass那里。

如果 OP 的自定义格式化方法被称为 format(),这就是 OP 需要做的所有事情。但是,他们的自定义格式化方法名称不同,因此他们还需要执行第二步。

  1. 在“其他格式化程序方法”框中,输入您创建的任何自定义方法的名称,这些方法类似于 format()。因此,在 OP 的情况下,字符串 myMethod 将被添加到那里。请注意,您不应包含类限定符、括号或参数,只需包含方法的名称。

从外观上看,在“其他格式化程序方法”框中输入的每个方法名称都适用于在“其他格式化程序类”框中输入的所有类,即使只有一个类实际上包含这样的方法。此外,即使没有任何类包含这样的方法,或者存在具有这样名称的方法,但它们没有必要的 void 签名(字符串格式,对象...参数),也不会出错.

所以,这个功能似乎是以一种非常老套的方式实现的,这种方式我们不习惯从 JetBrains 中看到。另外有趣的是,功能实现中的hackiness使用户更难弄清楚如何使用该功能。

我认为这个功能最好在格式化方法上加上一个额外的注释来实现。 (但我们不要在这里争论,这是一个问答网站。)

关于intellij-idea - 有没有办法将 IDEA "malformed format string"意图应用于自定义方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47007947/

相关文章:

linux - Intellij IDEA 2017.2 无法在 Linux Mint 18 上添加 openjk 9

intellij-idea - Intellij DB 控制台文件缓存?

intellij-idea - 无法刷新IntelliJ中的gradle项目

git - 在 IntelliJ 中重构时如何将更改日志保存在 git 文件中?

python - 如何在 Intellij IDEA 中运行 pylint 插件?

java - 如何解决 ElementcompilerArgs is not allowed here Maven 编译器插件错误?

sql-server - 在 Idea Ultimate Database 中解析模式名称

visual-studio-code - 如何在 VSCode 和 Intellij 中设置相同的 Terraform 格式化样式

java - 如何在 IntelliJ IDEA 调试器中按名称对属性进行排序?

java - 警告 : unknown enum constant Status. 稳定