- - PR -
if文の条件式に、String型で宣言した文字列を適用したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-09 22:25
お世話になります。のぶといいます。
今、XMLファイルの中に格納した文字式(例えば、x==1)をJavaのif文の条件式として入れ込もうとしているのですが、やり方に検討がつきません。 簡単に言うと、次のような感覚です。 class hello { public static void main(String arg[]) { String a = "x==1"; for (int x=0; x<5; x++){ if (a) { System.out.println(x); } } } } 当然、普通にやるとbooleanではないのでうまく行きません。 お忙しいところ恐縮ですが、お知恵をお貸しいただけませんでしょうか? | ||||
|
投稿日時: 2005-06-09 22:37
標準的なJavaの仕様だけでは動的に文字列をプログラムとして評価することができません。
ですがJavaで実装された他のスクリプト言語を利用してプログラムを動的に評価することが可能です。 JavaScript実装であるRhinoが機能も安定性も十分なのでお勧めします。 [ メッセージ編集済み 編集者: Anthyhime 編集日時 2005-06-09 22:37 ] | ||||
|
投稿日時: 2005-06-09 22:48
Seasar2で使用されているOGNLもお勧めです。
あと、バイトコードを動的に修正するって方法もありますね。 Javasisst等が使いやすいと思います。 Anthyhimeさんも仰るようにスクリプト言語や式言語等の 外部のランタイムを使用しなければ動的に式の評価ができません。 また、ローカル変数の名前と状態を知るにはCとデバッガインターフェイスを 使用しなければいけません。 ですので、ローカル変数の状態を式言語等で評価する事はできませんので、 別の手段を考えなければいけませんね。 | ||||
|
投稿日時: 2005-06-10 03:00
のぶです。
お忙しい中、Anthyhime様、かつのり様、ありがとうございます。 Javaだけではうまくいかないのですね。まずはお教えいただいたRhinoやOGNLについて勉強してみようと思います。その上で考えが及ばない場合、またご意見をいただければ幸いと存じます。 一点、ご質問させていただいてもよろしいでしょうか? かつのり様>ローカル変数の状態を式言語等で評価する事はできませんので、 かつのり様>別の手段を考えなければいけませんね。 もしよろしければ取っ掛かりとなるヒントをいただけませんでしょうか。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-06-10 07:21
ローカル変数名は外部から知る事はできません。
ですので、何かしらの名前と値の関連付けがないと駄目だということです。 なので、使うアーキテクチャによって方法は違いますが、 例えばOGNLならコンテナに変数名と値を設定しないと使えません。 | ||||
|
投稿日時: 2005-06-10 12:34
JAVAの動的評価なら、
Bean Scripting Framework http://jakarta.apache.org/bsf/index.html とか JAVAで作った各種スクリプト言語(多数出てきます) を 参考にできます。 | ||||
|
投稿日時: 2005-06-10 20:46
いろいろと、どうもありがとうございました。
今後ともよろしくお願いいたします。 | ||||
|
投稿日時: 2005-06-11 02:01
ところで、解決されたんですか? 解決した場合は、ご面倒かと思いますがフィードバックを宜しくお願いします。 解決しなかった場合は、何をしたけど解決しなかった。とこちらもレスポンスをよろしくお願いします。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ |
1