0

文字列として渡された関数をインスタンス化する必要があり、定義後に関数を実行できるようにする「関数」オブジェクトのラッパーを作成しました。

ラッパーは JavaAssist ライブラリを使用し、オブジェクトとメソッドをラッパー オブジェクトのフィールドとして使用し、メソッドを使用してラッパー クラスの外部で関数を使用できるようにします。

私の問題は、関数本体の構文に関するものです。たくさんあります java.lang.VerifyError: (class: MyClass, method: myMethod signature: (*my signature, unimportant *) Expecting to find *a primitive type* on stack

たとえば、その場でのキャストに関連する

 Double c = (double) intVariable;

私が解決したもの(本当に良い解決策ではありませんが、機能しています)これらのキャストを回避し、定義された型の変数を常にインスタンス化します

 Double c = new Double( (String) intVariable.toString() );

今、私は別の問題を抱えており、それは私を夢中にさせています:これは文字列の内容です

Double t2 =  new Double ( (String) parametri.get("pigreco").toString() );
Double t3 = new Double ( (String) (new Integer(2)).toString() );";
Double mysum = t2;
mysum+= t3;
return my sum;

t2.getClass() と t3.getClass() は java.lang.Double を返しますが、mysum は t2 と t3 の連結であり、算術合計ではありません...どうして可能なのでしょうか?

4

1 に答える 1

0

今のところ、私は

public static Double sommaDouble(Double a, Double b) {
    return a+b;
}

別のクラスで。私はより良い解決策を探しています.Javaassistのメソッドによって「+」が連結演算子として実行される理由を理解したいと思います.

于 2012-07-13T09:55:34.303 に答える