ずんだの縦読み問題 Java 12 Early-Access 版

元ネタ:


他言語ではヒアドキュメントなどと呼ばれる機能がJavaでは長らくサポートされておらず、ソースコード内に複数行にわたる文字列を記述したい場合


  • ひたすら+で結合する。


  • String::joinを活用する。

  • 何かしらの外部ライブラリを使う

などの対応を取る必要があり、コードをわかりづらくする原因になってきました。そういう批判・要望を受けてなのか、Project AmberではRaw String Literalという機能が提案されており、2018-09-28現在、JDK12のEarly-Access版に実装されています。

Early-Accessといっても、試すにあたってはさほど難しい手順はなく、JDK 12 Early-Access Buildsに用意されている、プラットフォームごとにビルドされたtar-ballを解凍するだけです。わたしはLinux用のtar-ballを利用しました。

tar xvf openjdk-12-ea+12_linux-x64_bin.tar.gz

するとjdk-12というディレクトリができるので、そのディレクトリと同じ階層に以下のようなMain.javaを用意します。


Main.java

public class Main {

public static void main(String[] args) {
var tweet = `
忙しくてついったいじれない
さみしい
つらい
`;
tweet.align().lines().map(line -> line.substring(0, 1)).forEach(System.out::println);
}
}

あとは以下の要領でコンパイルし、実行すると、想定通りの結果を得ることができました(´・ω・`)

$ ./jdk-12/bin/javac --enable-preview --release 12 Main.java

Note: Main.java uses preview language features.
Note: Recompile with -Xlint:preview for details.
$ ./jdk-12/bin/java --enable-preview Main



なお詳細なバージョン情報は以下の通りでした。

$ ./jdk-12/bin/java --version

openjdk 12-ea 2019-03-19
OpenJDK Runtime Environment 19.3 (build 12-ea+12)
OpenJDK 64-Bit Server VM 19.3 (build 12-ea+12, mixed mode)


参考: