Java,212 196字节(具有可疑硬编码规则的171字节)
感谢@Cruncher将它缩短了〜15个字节!
我毫不怀疑这可以打高尔夫球。
import java.nio.file.*;class A{public static void main(String[]a){new A();}A(){try{System.out.print(new String(Files.readAllBytes(Paths.get(getClass().getName()+".java"))));}catch(Exception e){}}}
或者,使用静态方法(以及类的名称)的另一种方法,我得到171个字节。不过,我不确定这是否符合硬编码要求。
import java.nio.file.*;class A{public static void main(String[]a)throws Exception{System.out.print(new String(Files.readAllBytes(Paths.get(A.class.getName()+".java"))));}}
使用构造函数通过非静态方法获取类名称。使用静态方法(A.class.getName()
)确实很难编码,因此我使用了“正确”的方式。使用A.class.getName()
,此代码缩短为171个字节。
可读版本:
使用构造函数和this.getClass()
:
import java.nio.file.*;
class A{
public static void main(String[]a) {
new A();
}
A(){
try{
System.out.print(
new String(
Files.readAllBytes(
Paths.get(
getClass().getName()+".java"))));
}
catch(Exception e) {}
}
}
使用静态方法A.class.getName()
:
import java.nio.file.*;
class A {
public static void main(String[] a) throws Exception {
System.out.print(
new String(
Files.readAllBytes(
Paths.get(
A.class.getName()+".java"))));
}
}
一次抓取文件的所有字节并将其输出到STDOUT。非常简单。