2016-11-03 5 views
-4

私は、コードを指定していますJava式

Map<String, Object> filters = new HashMap<String, Object>(); 
filters.put("deleted", false); 
for (Map.Entry<String, Object> entry : filters.entrySet()) { 
    String key = entry.getKey();      
    Object value = entry.getValue();   **// No evaluation** 
    Expression<?> exp = (Expression<?>) entry.getValue(); **// Error** 
} 

Javaが評価され、エラーを生成しないのはなぜ?

+3

評価していないということを意味しますか?そして、どういう意味ですか、エラー?どのようなエラー?あなたの質問は非常に不明です。 – yshavit

答えて

1

BooleanExpression<?>にキャストできないため失敗します。

falseをマップに追加すると、オートボックスがBooleanオブジェクトになります。クラスBooleanは、Expressionインターフェイスまたはクラスを拡張しません。私はあなたが持っているタイプがExpressionであるかどうか本当に分かりません。

+0

私のコードでは、カラム名 'deleted' type 'boolean'を含むentityClassを指定しました。 すべてのデータを列deleted = falseと比較してフィルタしたいと思います。 申し訳ありません... "Object value = entry.getValue();" - >これは大丈夫です。 次の行(私は文字列形式で式を取得しようとする)、 "式 exp =(式)entry.getValue()"、私はメッセージを得た:(java.lang.ClassCastException)java.lang.ClassCastException:java .lang.Booleanをjava.lang.Stringにキャストすることはできません) 私は本当にどのように式を取得するのか分かりません。 "deleted = false" – fstfwd

+0

すべての式があり、削除された式を見つける必要がある場合それらをループし、 '!expression.isDeleted()'をチェックする必要があります。私はあなたがこの地図で何を達成しようとしているのか分かりません。 'Expression'sを含んでいないので、' Expression'に値をキャストすることはできません。 – marstran