Java、212 196バイト(疑わしいハードコーディングルールを含む171バイト)
15バイトまで短縮してくれた@Cruncherに感謝します!
これがゴルフできることは間違いありません。
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に出力します。とても簡単です。