我正在玩GAE(我正在使用Objectify)并希望制作类似通用方法的东西,但不确定如何做到(就我的理解而言,仿制药不会是一个解决方案为了我)。 这是我的设置:
public abstract class Cloud{
Key<Cloud> parent;
public Cloud(Key<Cloud> parent,...){
....
}
}
public class TagCloud extends Cloud{
public TagCloud(Key<Cloud> parent,...){
super(parent,...);
....
}
}
我的目标是做这样的事情;
Key<TagCloud> parentKey=put(new TagCloud(null,...));
Key<LadyGaggaCloud> childKey=put(new LadyGaggaCloud(parentKey,...));
显然,这不起作用,因为Cloud想要一个通用的云键而不是TagCloud。我希望能够传递所有云类型的键,扩展云(键&lt; TagCloud&gt;,键&lt; FooCloud&gt;,键&lt; LadyGagaCloud&gt;等)。
我考虑过使用模板制作Cloud Class泛型,所以我可以做一些Key< T extends Cloud> parent
并将扩展云(FooCloud)传递给它,但这不会令人满意,因为TagCloud可以有任何类型的云作为父母而不仅仅是一种类型。
有没有人知道如何做到这一点?或者我正在尝试做的关于GAE和NoSQL是一个愚蠢的想法,我应该在数据域中处理不同类型的云吗? 谢谢你的帮助!
答案 0 :(得分:0)
这可能会实现您所描述的内容:
public abstract class Cloud{
Key<? extends Cloud> parent;
public Cloud(Key<? extends Cloud> parent,...){
....
}
}