有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类方法接受Java中不同对象的列表

是否可以在Java中执行此操作:

  • 将参数传递给将接受不同类型列表的方法
  • 以及在方法中使用该类类型
public class Test {
  public boolean testing(List<ClassType> testObjs) {
    int vals = 0;
    if (CollectionUtils.isNotEmpty(testObjs)) {
      vals += testObjs.stream()
                      .map(ClassType::getTestType)
                      .filter(isTestobj::isTest)
                      .count();
                }
     do_processing_with_vals
     return boolean_value;
  }
}

有3个不同的类具有方法getTestType,但不幸的是,它们位于不同的库中,并且不共享公共父类/接口。我必须调用一个方法(例如testing),该方法可以获取这3个类对象的列表并对其进行一些处理。我不想要3种不同的方法,它们之间的区别只是传递的对象的类(例如ClassType

当我用Object代替ClassType时,它会抛出错误,说cannot resolve method getTestType


共 (2) 个答案

  1. # 2 楼答案

    由于这些方法不共享公共接口(这是最好的解决方案),因此最干净的选择可能是传递适当的函数或谓词:

    public boolean <T> testing(List<T> testObjs, Predicate<? super T> isTest) {
      vals += testObjs.stream().filter(isTest).count();
    }
    
    ...
    testing(someObjs, ObjType::isTest);