Java 从树中提取数据

Java 从树中提取数据,java,api,Java,Api,我有一个像上面这样的树结构,我需要解析它。我试图设计一个API,让人们阅读这棵树。我希望通过让人们在此树中指定他们感兴趣的对象并返回它们来实现这一点。例如,如果我对猫感兴趣,我希望我的提取器方法返回所有猫。如果我想了解所有的动物,我想归还所有的动物物品 我想我可以这样做- T | | |

我有一个像上面这样的树结构,我需要解析它。我试图设计一个API,让人们阅读这棵树。我希望通过让人们在此树中指定他们感兴趣的对象并返回它们来实现这一点。例如,如果我对猫感兴趣,我希望我的提取器方法返回所有猫。如果我想了解所有的动物,我想归还所有的动物物品

我想我可以这样做-

                           T                 
                           |
                       |       |
                     Animal  Plant
                       |
                   |       |
               Dog   Cat  ..

现在,这个方法每次都将返回不同类型的对象。一次,它可以返回
Plant
,另一次它可以返回
Cat
。那么,我应该让它返回一个
LivingThing
?如果我让它返回一个超类类型,调用方是否应该在代码中应用强制转换?这不是有点难看吗?或者,我应该只设计多个方法
getCats()
getanives()
,使用不同的具体返回类型吗

可以使用泛型使方法返回不同的类型。用户只需将类指定为参数,例如:

    TreeDataExtractor extractor = new TreeExtractor();
    extractor.registerLivingThingOfInterest(LivingThings.ANIMAL);
    extractor.getData();

应该是
getData@Jay不,我不这么认为。可见性修改器之后的过滤器已经缩小了可能的类型。另外,我相信你写的东西会引起语法错误。
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);