编写表格代码时:
String.format("blah %s %s", value1);
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);
关键是我想让IDEA告诉我,我搞砸了。
如示例所示,我已经记录了委托给String.format()
的这些方法。
理想情况下,我更愿意避免重复该文档 - 尽管我愿意将其转换为自定义格式,或者可能是注释(最好不是IDEA注释)。
答案 0 :(得分:3)
斯蒂芬·弗里德里希(Stephen Friedrich)的答案指向正确的方向,但是截图不足以了解如何使用该功能。这是如何使其更详细地工作:
format()
方法的所有自定义类。因此,在OP的情况下,如果他们的myMethod()
方法属于某个com.acme.MyClass
类,那么他们将在此处输入com.acme.MyClass
。 如果OP的自定义格式设置方法称为format()
,那将是OP所要做的全部工作。但是,他们的自定义格式设置方法的名称不同,因此还需要执行第二步。
format()
。因此,在OP的情况下,将在此处添加字符串myMethod
。请注意,您不应只包含方法的名称,也不能包含类限定符,括号或参数。从外观上看,在“其他格式化程序方法”框中输入的每个方法名称适用于在“其他格式化程序类”框中输入的所有类,即使实际上只有一个类包含此类方法也是如此。此外,即使没有一个类包含此类方法,或者存在具有此类名称的方法,但它们没有必要的void (String format, Object... arguments)
签名,也不会出现错误。
因此,似乎已经以一种非常骇人听闻的方式实现了此功能,这是我们从JetBrains所见不到的那种方式。同样有趣的是,由于功能实施过程中存在漏洞,使得用户更难弄清楚如何使用功能。
我认为,最好在格式化方法上附加注释来实现此功能。 (但是我们不要在这里争论,这是一个问答网站。)
答案 1 :(得分:2)