是否有可能有一个Java printf语句,其输出是语句本身?
一些片段来说明:
// attempt #1
public class Main {
public static void main(String[] args) {
System.out.printf("something");
}
}
Run Code Online (Sandbox Code Playgroud)
这打印something.
因此,尝试#1的输出并不完全是printf尝试#1中的语句.我们可以尝试这样的事情:
// attempt #2
public class Main {
public static void main(String[] args) {
System.out.printf("System.out.printf(\"something\");");
}
}
Run Code Online (Sandbox Code Playgroud)
现在输出是 System.out.printf("something");
所以现在尝试#2的输出与输出#1中的语句匹配,但是我们回到了之前的问题,因为我们需要尝试#2的输出来匹配尝试#2中的语句.
那么可以写一个printf打印自己的单行语句吗?
它不漂亮,但这肯定是可能的:
public class Main {
public static void main(String[] args) {
System.out.printf("System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);",34,"System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);");
}
}
Run Code Online (Sandbox Code Playgroud)
输出(在ideone.com上运行)是:
System.out.printf("System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);",34,"System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);");
Run Code Online (Sandbox Code Playgroud)
此输出与printf语句匹配.
可能会有更短的解决方案.
java.util.Formatter 句法
%[argument_index$]conversion