I came across this little quine program, written without main method:

enum f {
  f;
  System z;
  String s="enum f{f;System z;String s=%c%s%1$c;{z.out.printf(s,34,s);z.exit(0);}}";
  {z.out.printf(s,34,s);
  z.exit(0);}
}

Can somebody explain how does this work? Thanks.

有帮助吗?

解决方案

Lines 5 and 6 are an instance initializer. It is called when the class is instantiated. Since this is an enum with one constant named f, it is going to be instantiated once and the instance initializer block is executed.

Note that z is null, but out is a static member of class System, so you can call z.out.printf() anyway. The printf statement takes the string s as a format string with two arguments, 34 and s itself.

34 is the ASCII code for double quote ". It is filled in for the %c and %1$c in the format string. The %s in the format string is replaced by the format string s itself.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top