java - 从树中提取数据

标签 java api

                           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/

相关文章:

javascript - 如何使用查询字符串从两个 Web 应用程序安全地传递 Bearer Token?

java - 如何防止服务 block 启动

java - 显示猜谜游戏的游戏数、最佳游戏和总尝试次数

java - 如何处理 "Property or field cannot be found on object in SpEL"?

ios - GMSPlace - 我可以从一组坐标中得到它吗

ios - 如何使用 soundcloud Sdk iOS 搜索轨道

list - Flutter 将搜索数据传递给 SearchDelegate

java - 将通过继承创建的对象添加到链表并实现其方法

java - XMLUnit 2.0 - 无法避免与自定义元素选择器进行顺序比较

api - 如何查询 gRPC 端点?