元ネタ:
他言語ではヒアドキュメントなどと呼ばれる機能が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)
参考: