- PR -

if文の条件式に、String型で宣言した文字列を適用したい

1
投稿者投稿内容
nob
会議室デビュー日: 2005/06/01
投稿数: 9
投稿日時: 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ではないのでうまく行きません。
お忙しいところ恐縮ですが、お知恵をお貸しいただけませんでしょうか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-06-09 22:37
標準的なJavaの仕様だけでは動的に文字列をプログラムとして評価することができません。
ですがJavaで実装された他のスクリプト言語を利用してプログラムを動的に評価することが可能です。
JavaScript実装であるRhinoが機能も安定性も十分なのでお勧めします。


[ メッセージ編集済み 編集者: Anthyhime 編集日時 2005-06-09 22:37 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-09 22:48
Seasar2で使用されているOGNLもお勧めです。
あと、バイトコードを動的に修正するって方法もありますね。
Javasisst等が使いやすいと思います。
Anthyhimeさんも仰るようにスクリプト言語や式言語等の
外部のランタイムを使用しなければ動的に式の評価ができません。

また、ローカル変数の名前と状態を知るにはCとデバッガインターフェイスを
使用しなければいけません。
ですので、ローカル変数の状態を式言語等で評価する事はできませんので、
別の手段を考えなければいけませんね。
nob
会議室デビュー日: 2005/06/01
投稿数: 9
投稿日時: 2005-06-10 03:00
のぶです。
お忙しい中、Anthyhime様、かつのり様、ありがとうございます。
Javaだけではうまくいかないのですね。まずはお教えいただいたRhinoやOGNLについて勉強してみようと思います。その上で考えが及ばない場合、またご意見をいただければ幸いと存じます。

一点、ご質問させていただいてもよろしいでしょうか?
かつのり様>ローカル変数の状態を式言語等で評価する事はできませんので、
かつのり様>別の手段を考えなければいけませんね。
もしよろしければ取っ掛かりとなるヒントをいただけませんでしょうか。
よろしくお願いいたします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-10 07:21
ローカル変数名は外部から知る事はできません。
ですので、何かしらの名前と値の関連付けがないと駄目だということです。
なので、使うアーキテクチャによって方法は違いますが、
例えばOGNLならコンテナに変数名と値を設定しないと使えません。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-06-10 12:34
JAVAの動的評価なら、
Bean Scripting Framework
http://jakarta.apache.org/bsf/index.html
とか
JAVAで作った各種スクリプト言語(多数出てきます)

参考にできます。
nob
会議室デビュー日: 2005/06/01
投稿数: 9
投稿日時: 2005-06-10 20:46
いろいろと、どうもありがとうございました。
今後ともよろしくお願いいたします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-06-11 02:01
引用:

nobさんの書き込み (2005-06-10 20:46) より:
いろいろと、どうもありがとうございました。
今後ともよろしくお願いいたします。



ところで、解決されたんですか?
解決した場合は、ご面倒かと思いますがフィードバックを宜しくお願いします。
解決しなかった場合は、何をしたけど解決しなかった。とこちらもレスポンスをよろしくお願いします。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
1

スキルアップ/キャリアアップ(JOB@IT)