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
isnull
, butout
is a static member of classSystem
, so you can callz.out.printf()
anyway. Theprintf
statement takes the strings
as a format string with two arguments,34
ands
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 strings
itself.