T | | | Animal Plant | | | Dog Cat ..
我有一个像上面这样的树结构,我需要解析它。我正在尝试设计一个 API,让人们阅读这棵树。我想通过让人们在这棵树中指定他们感兴趣的对象并返回它们来实现这一点。例如,如果我对猫感兴趣,我希望我的提取器方法返回所有猫。如果我想了解所有动物,我想归还所有动物对象。
我想我可以做这样的事情-
TreeDataExtractor extractor = new TreeExtractor();
extractor.registerLivingThingOfInterest(LivingThings.ANIMAL);
extractor.getData();
现在,此方法 getData()
每次都会返回不同类型的对象。一次,它可以返回 Plant
,另一次它可以返回 Cat
。那么,我应该让它返回一个 LivingThing
吗?如果我让它返回一个父类(super class)类型,调用者是否应该在他的代码中应用强制转换?会不会有点丑?或者,我应该只设计多个具有不同具体返回类型的方法 getCats()
、getAnimals()
吗?
最佳答案
您可以使用泛型使方法返回不同的类型。用户只需将类指定为参数,例如:
public <T extends LivingThing> T getData(Class<T> clazz, Object otherParam) {
// insert code here
}
你会像这样使用它:
Cat c = getData(Cat.class, otherParam);
Dog d = getData(Dog.class, otherParam);
关于java - 从树中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151294/