2012-03-14 8 views
0

setUnindexedProperty()を使用してArrayListをエンティティに配置すると、どのように戻ってきますか?getProperty()を使用してエンティティからコレクションを正しく取得する方法

私はこれやってる:

Collection<Key> keys = (Collection<Key>) entity.getProperty(propName); 

をそして私はこの警告を得る:

warning: [unchecked] unchecked cast 
found : java.lang.Object 
required: java.util.Collection<com.google.appengine.api.datastore.Key> 
    Collection<Key> keys = (Collection<Key>) entity.getProperty(propName); 

は、これは私ができる最善のですか?少なくとも警告を取り除く方法はありますか?

更新:私は、ストップまたはBlobと言ってダウンキャストしたオブジェクトを返す他のentity.getProperty()呼び出しでこの警告を受け取ることはありません。

+0

'Key'のインポートが' com.google.appengine.api.datastore.Key'以外のものになる可能性はありますか?たびたびEclipseは間違ったインポートを提供します。 –

+0

いいえ、Eclipseを使用していないので、他のライブラリを誤ってインポートしていませんでした。 – Daniel

答えて

-1

次のアノテーションを使用して、チェックされていないキャスト警告を無視できます。

@SuppressWarnings("unchecked") 

しかし、警告ではなく、警告が表示されないようにすることを前提としています。

+0

問題をどのように「修正」すればよいですか? – Daniel

1

entity.getProperty()はObjectを返します。あなたが実際に出し入れしていることを知る方法がないので、あなたが@SuppressWarningsを使わない限り、いつもあなたに警告するつもりです。このようにするのが快適でない場合は、ネイティブデータストアの代わりにObjectify/Twig/JDOのようなものを使用する必要があります。

+0

私はgetProperty()を使用する場所が他にもあり、結果をStringやBlobにキャストし、警告を出さないので、それはできません。 – Daniel

+0

apiを見てください。 getPropertyはObjectを返します。オブジェクトを何かにキャストすると、チェックされていないキャストに関する警告が表示されます。それがJavaの仕組みです。 –

+0

まあ、いいえ。私が以前のコメントで言ったように、他の場所では、オブジェクトを他のものにキャストしています。私は警告を受けていません。コレクションにキャストするときだけ取得します。 – Daniel

関連する問題