Java 9でプログラムからJShellインスタンスを作成する方法
JShellは、Java 9で導入された対話型ツールです。ユーザーが入力したコードを読み取り、評価し、その結果を出力するというシンプルなプログラミング環境をコマンドライン上で実現できる、Java初の公式REPL(Read-Eval-Print Loop)ツールです。
通常はコマンドラインから利用しますが、実はJavaのコードから新しいJShellインスタンスをプログラム的に作成することも可能です。JShellおよびその関連APIは、jdk.jshellパッケージに含まれています。
JShellの新しいインスタンスを取得するには、JShellクラスの静的メソッドcreate()を使用します。さらに、JShellクラスのeval()メソッドを使うことで、式をJShellインスタンスに追加できます。このメソッドは、評価の結果として発生したイベントのリスト(List<SnippetEvent>)を返します。返されるイベントは1つのスニペットに対応しており、その内容は式、ステートメント、メソッド、クラス、変数宣言、あるいはimport文などです。
eval()メソッドによって生成された各SnippetEventに対しては、SnippetEvent.value()メソッドを呼び出すことで、式の評価結果(出力値)を確認できます。
サンプルコード
import java.util.List;
import jdk.jshell.*;
public class JShellTest {
public static void main(String args[]) {
// JShellインスタンスを作成
JShell jshell = JShell.create();
// 式を評価し、イベントリストを取得
List<SnippetEvent> list = jshell.eval("int x = 7+3*4;");
System.out.println("リストのサイズ: " + list.size());
System.out.println("式の値: " + list.get(0).value());
}
}
実行結果
リストのサイズ: 1 式の値: 19
この例では、まずJShell.create()によってJShellインスタンスを生成し、続いてeval()メソッドに「int x = 7+3*4;」という式を渡しています。評価の結果として返されるイベントリストのサイズは1であり、list.get(0).value()を呼び出すことで、計算結果である「19」が取得できていることがわかります。
このように、JShell APIを活用すれば、アプリケーション内から動的にJavaコードを評価・実行する環境を簡単に構築できます。
-
Javaで一時ファイル(テンポラリファイル)を作成する方法
プログラムの実行中に、一時的な情報を保存するためにその場で一時ファイルを作成し、後から削除したいケースはよくあります。 Javaでは、Files.createTempFile() メソッドを使用することで、簡単に一時ファイルを作成できます。 一時ファイルの作成 次の例では、Files.createTempFile(prefix, suffix) を使って一時ファイルを作成しています。 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; public class CreateTem
-
Twitterリストの作り方を徹底解説!PC・スマホ別の作成手順まとめ
Twitterの便利な機能のひとつが「Twitterリスト」です。このSNSでは、1つのリストに最大5,000アカウントまで登録できるリストを複数作成できます。 Twitterリストを使えば、フォローしているアカウントはもちろん、フォローしていないアカウントも、自分の好みの基準で自由に整理できます。 例えば、ミーム系アカウントだけを集めたリストを作れば、毎日の笑いをひとつの画面で楽しめます。また、スポーツ関連のアカウントをまとめたリストを作れば、お気に入りのチームの最新情報を逃さずチェックすることも可能です。 使い方は人それぞれですが、Twitterリストはこのプラットフォームが提供する最も実