我有一个有趣的情况,我想知道是否有更好的方法来做到这一点。情况是这样的,我有一个树结构(特别是抽象语法树),一些节点可以包含各种类型的子节点,但都是从给定的基类扩展而来的。我想经常对这棵树进行查询,并且想返回我感兴趣的特定子类型。因此我创建了一个谓词类,然后我可以将其传递给通用查询方法。起初我有一个看起来像这样的查询方法:publicListfindAll(IElementPredicatepred,Classc);其中Class参数仅用于指示返回类型。这种方法让我感到困扰的是,我所有的谓词都已经针对特定类型,因此这里有冗余信息。典型的调用可能如下所示:Listdecls=scope.