0

lambdaj(私ではない)に精通している人は、以前にこのスタックトレースまたはいくつかのバリエーションを見たことがあるでしょう。

ch.lambdaj.function.argument.ArgumentConversionException:ch.lambdajのch.lambdaj.function.argument.ArgumentsFactory.actualArgument(ArgumentsFactory.java:92)の有効な引数でプレースホルダーorg.dom4j.tree.AbstractAttributeを変換できません。 function.matcher.HasArgumentWithValue.havingValue(HasArgumentWithValue.java:70)at ch.lambdaj.Lambda.having(Lambda.java:1204)

私の理解では、これは最終クラスでのlambdajの制限によって発生します。

次のコードをテストすると、上記のようになります。

import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.selectFirst;
import static org.hamcrest.CoreMatchers.equalTo;

import java.util.List;

import org.dom4j.tree.AbstractAttribute;
public class DocumentUtils {

    public static String getAttributeValueFromListByName(
            List<AbstractAttribute> list, String name) {

        AbstractAttribute requiredAttribute = selectFirst(list,
                having((AbstractAttribute.class).getName(), equalTo(name)));

        String value = requiredAttribute.getValue();

        return value;

    }

}

私はdom4jのAttributeインターフェースを使用していて、同じ問題が発生しましたが、おそらくlambdajはインターフェースが好きではないと思いました。そこで、AbstractAttribute抽象クラスに切り替えました。

lambdajと抽象クラスに問題はありますか?それとも私の方法はただのズボンですか?これを解決する方法はありますか?

参考:私はlambdaj2.4とdom4j1.6を使用しています

よろしくお願いします。

4

2 に答える 2

0

lambdaj 2.4を使用している場合、この問題はそのリリースで修正されているため、幸運です。この問題とその解決策は、lambdaj2.4のリリースノートの最初のポイントで説明されています。

特に、lambdajは内部ヒューリスティックを使用して引数のプレースホルダーを作成しますが、機能しない場合もあるため、そこで説明されているようにオーバーライドできます。

于 2012-03-27T09:56:36.417 に答える
0

マリオ・フスコ(LambdaJ Developer)の要請により、問題92がlambdajで提起されました。

于 2012-03-27T11:22:52.633 に答える