Прохождение общего объекта Java - PullRequest
0 голосов
/ 10 октября 2010

Я играю на 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 нужен общий ключ Cloud, а неTagCloud.Я хочу иметь возможность передавать все ключи типов облаков, которые расширяют облако (ключ , ключ , ключ и т. Д.).Я думал о создании общего класса Cloud с использованием шаблонов, чтобы я мог сделать что-то вроде Key< T extends Cloud> parent и передать ему расширяющееся облако (FooCloud), но это не удовлетворило бы, потому что TagCloud может иметь любой тип облака в качестве родительскогоа не один единственный тип.

Кто-нибудь знает, как этого добиться?Или то, что я пытаюсь сделать в отношении GAE и NoSQL, - глупая идея, и мне следует обращаться с различными типами облаков в поле данных?Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 10 октября 2010

Это может выполнить то, что вы описываете:

public abstract class Cloud{
    Key<? extends Cloud> parent;
    public Cloud(Key<? extends Cloud> parent,...){
        ....
    }
}
...