2016-11-24 10 views
1

私はJDK9に見てきたと私はjshellにあなたはのprintf(「テスト」)を書くことができる。すなわちSystem.out.printf()のprintf()の前に付ける必要がないことに気づいが、あなたはJDK 9 jshell printf()特別扱いですか?

enter image description here

はこれが唯一のjshellの機能ですのprintln( "テスト")を書き込むことはできませんか?アプリケーションで同じ動作を達成するにはどうすればよいですか?

以下が最も近い:

import static java.lang.System.out ; 
out.println("test"); 
out.printf("test"); 
+0

記録のために、「printf」が削除されました(https://stackoverflow.com/a/43864201/6730571) –

+0

Javaのイノベーションのペースに逆らって、とにかく言語の領域をたくさん意思決定する印刷は基本的で重要な機能ですが、なぜ彼らがシェルのデフォルトインポートからそれを削除したのか分かりません。 – firephil

答えて

1

IITはprintfのように見えるがJShellでコマンドですが、printlnが(ちょうどbashシェルのように)ではありません。 System.outによって使用されるprintf()メソッドは、jshellが使用するメソッドと同じではないため、Javaアプリケーションで静的にインポートすることはできません。

源:System.out.printfにリダイレクト事前定義されたprintfの方法があった初期アクセスの以前のバージョンで

http://jakubdziworski.github.io/java/2016/07/31/jshell-getting-started-examples.html

https://jshelltutorial.com/jshells-printf-method/
+0

私のスクリーンショットを確認してください... – firephil

+0

あなたの使い方を示すために更新していただきありがとうございます。まだ答えが分からない場合は私の答えを編集して、私はさらに説明します。 –

+0

私はまた、達成方法についていくつかの洞察力を求めていました...それはjshellの単なる機能です – firephil

1

。これには2つの問題がありました。標準的なJavaではなく、他の回答で指摘されているように、印刷物と印刷物が定義されていないという点で一貫性がありませんでした。

現在の早期アクセスおよび出荷予定では、自動的に定義された印刷方法はありません。これを望むなら、jshellを起動してください:

jshell --start DEFAULT --start PRINTING 

これはあなたに完全な印刷方法を提供します。

質問の2番目の部分に答えるには、上記のように起動した後に/ methodコマンドを使用して、リダイレクト方法の定義を確認します。これらをクラスに追加するとアクセスできますが、それはかなり醜いです。また、クラス内で静的メソッドをパブリックにしてインポートすることもできます。

関連する問題