0

Javaでコマンドのような文字列を実装しようとしています:

public static void main(String[] args) {
   String command = "System.out.println("hello word");";
   ...
}

コンソールで出力「hello word」を実行するには、コマンド文字列をコマンド ラインに変換する必要があります。このテクノロジーを使用してコードを改善したいと考えています。

SimpleDateFormat sdf = new SimpleDateFormat("MMMM");
String month = sdf.format(calIndex.getTime()); 
switch (month) { 
   case "January": 
       leaveDetailCLateLEarly.february += 10;
       break; }
...

上記はかなり冗長です。もっと短く書きたい:

String command = "leaveDetailCLateLEarly."+ month + "+= 10"

leaveDetailCLateLEarly はオブジェクトであり、属性として 12 か月を持っています。(つまり、1月、2月など...)次に、月の値を変更できるコマンド文字列「leaveDetailCLateLEarly.month = 10」があります(1月、2月、3月、...)。プロジェクトが実行されると、文字列はコマンド ラインに変換され、必要な機能が実装されます。

4

2 に答える 2

5

これは、Compiler API を使用してこれを行うために何年も前に作成したライブラリです。Essence JCF 任意の String をコンパイルしてクラス ファイルとしてロードします。(ネストされたクラスを含む)ディスクに触れずに。

Beanshell を使用して Java コードを動的に実行することもできます。これは多くの Java デバッガーで使用されていますが、Java の完全な機能を備えたバージョンではありません。

もう 1 つのアプローチは、すべての Java コードをサポートし、動的に実行される groovy を使用することです。

これらのアプローチはどれも簡単ではなく、広く使用されているものでもありません。なぜこれを行う必要があるのか​​を再考し、別のアプローチを試すことをお勧めします。

于 2013-08-28T10:10:54.063 に答える
0

あなたが何を求めているのか本当にわかりません。ユーザーが文字列「command」を入力すると、「hello world」メッセージが表示されるようにしますか? もしそうなら、これを試してください:

Scanner scanner = new Scanner(System.in);
String input ="";
do{
  System.out.println("Command?:");
  input = scanner.nextLine();
while(!input.equals("command"));
System.out.println("Hello world!");
于 2013-08-28T10:10:58.720 に答える