• ベストアンサー

[JAVA]evalで文字列を計算式に!

こんにちわぁ♪ Javascriptに「eval」というコマンドがあると思います。 これは、文字列を計算式として変換するものです。 例えば String SHIKI = "A + B" という文字列があり、evalを使ってやると その時点で文字列ではなくなり、 普通に、 A=3; B=4; String C = eval(SHIKI); と計算式にすることができます(使い方がちがうかもしれませんが)。 しかし、JAVAスクリプトではあるこのコマンドが JAVAでは見つかりません。 これと同等のコマンド、JAVAにありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • -soh-
  • ベストアンサー率27% (55/201)
回答No.1

こんちは、sohです ん~む。core APIにはおそらく無かったと記憶しています(ちょっと自信無し) JAVAScriptやPerlは文字列操作を重要視しているようですが JAVAは文字列をそこまで重要視していないんですよ。 逆にJAVAScriptをLiveConnectで流用して(認証済みAppletじゃないと使えないけど) netscape.javascript.JSObjectで呼び出すって 技もありますが、いまどきこんなん使える人いるのかしら?

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

JavaScript はインタープリタ型の言語なので、プログラムの実行時にソースコードそのものがインタープリタによって解釈されて実行されます。したがってJavaScriptの実行環境には計算式などを機械語に翻訳する機能が必要なわけで、プログラムの中からその機能を呼び出すことが出来ればあなたのおっしゃるようなことが実現できるのです。(実際に、evalを使ってその機能を呼び出しています) しかしJavaはコンパイル型の言語なので、実行時にはバイトコードが解釈されて実行されるわけですから、実行時に計算式などを機械語に変換する必要がありません。したがって、Javaの実行環境にもそのような機能は入っていません。JavaにはJavaScriptのevalのような機能はないということになります。 というよりも、Javaがコンパイル型の言語であるという時点でこのようなことが不可能であるというのは明確です。 例えば、ご質問にあるようなコードですが、 int value1 = 1; int value2 = 2; int answer = eval("value1 + value2"); このようなコードがもしあったとしても、コンパイルした時点で変数の名前がvalue1とvalue2であるとかいうような情報は消えてしまう(つまり、変数の名前がどうであるというような情報はバイトコード上には書き込まれない)のですから、実行時に「こんな名前の変数に入っているデータを足せ」というような動作は無理な話です。

関連するQ&A