Sho*_*orn 3 intellij-idea intellij-idea2017
编写表单代码时:
String.format("blah %s %s", value1);
Run Code Online (Sandbox Code Playgroud)
IntelliJ 将警告格式模式的数量和实际参数之间存在不匹配:too few arguments for format string (found:1, expected: 2).
有没有办法将此逻辑应用于自定义方法?例如:
/** @see String#format(String, Object...) */
public String myMethod(String msg, Object... args){
return String.format("blah " + msg, args);
}
...
myMethod("%s %s", value1);
Run Code Online (Sandbox Code Playgroud)
关键是我想让 IDEA 告诉我我搞砸了。
如示例所示,我已经记录了这些委托给String.format().
理想情况下,我宁愿避免复制该文档 - 尽管我愿意将其转换为自定义格式,或者可能是注释(尽管最好不是 IDEA 注释)。
Stephen Friedrich 的回答指出了正确的方向,但截图不足以了解如何使用该功能。以下是如何让它工作,更详细一点:
format()方法的任何自定义类。所以,在 OP 的情况下,如果他们的myMethod()方法属于某个com.acme.MyClass类,那么他们就会进入com.acme.MyClass那里。 如果调用了他们的自定义格式设置方法,这就是 OP 需要做的全部工作format()。但是,他们的自定义格式化方法具有不同的名称,因此他们还需要执行第二步。
format(). 因此,在 OP 的情况下,字符串myMethod将被添加到那里。请注意,您不应包含类限定符、括号或参数,而只包含方法的名称。从它的外观来看,在“其他格式化程序方法”框中输入的每个方法名称都适用于在“其他格式化程序类”框中输入的所有类,即使实际上只有一个类包含这样的方法。此外,即使没有任何类包含这样的方法,或者如果存在具有这样名称的方法,但它们没有必要的签名,也不会有错误void (String format, Object... arguments)。
所以,这个功能似乎是以一种非常hacky的方式实现的,我们不习惯从JetBrains看到的那种。此外,有趣的是,功能实现中的 hackiness 使用户更难弄清楚如何使用该功能。
我认为最好在格式化方法上添加额外的注释来实现此功能。(但我们不要在这里争论这个,这是一个问答网站。)
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |