2012-03-14 58 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); 

这是我能做到的最好?至少有一种方法来摆脱警告?

更新:我没有得到此警告在其他entity.getProperty()调用返回一个对象,我downcast,说一个字符串或Blob。

+0

是否有可能你的'Key'的导入不是'com.google.appengine.api.datastore.Key'? Eclipse经常提供错误的导入。 – 2012-03-15 00:16:25

+0

不,我没有使用Eclipse,所以我没有意外地导入一些其他库。 – Daniel 2012-03-25 03:58:14

回答

-1

您可以使用以下注释忽略未检查的转换警告。

@SuppressWarnings("unchecked") 

但是,这假设你想压制警告,而不是解决它所抱怨的问题。

+0

我该如何“修复”这个问题? – Daniel 2012-03-25 03:55:46

1

entity.getProperty()返回一个Object。它没有办法知道你实际上放入或放出什么,所以它总是会警告你,除非你@SuppressWarnings。如果你不习惯这样做,你必须使用像Objectify/Twig/JDO而不是本地数据存储。

+0

不能这样,因为我在其他地方使用getProperty(),将结果向下投射到String或Blob,并且我*不*得到警告。 – Daniel 2012-03-25 03:55:22

+0

看看api。 getProperty返回一个Object。如果你将一个对象投射到任何东西,你会得到一个关于未经检查的投射的警告。这就是java的工作方式。 – 2012-03-25 14:40:49

+0

好吧,没有。正如我在前面的评论中所说的,在其他地方,我将对象转换为其他的东西,而我*不*得到警告。我只能在收集时收到。 – Daniel 2012-03-25 22:43:05

相关问题