java - 变量(函数类型)参数计数和变量返回类型

标签 java generics functional-interface

我有以下问题 - 我必须编写一个方法,该方法将采用可变数量的函数参数,并基于此返回所需的类型。问题是,参数中的函数按顺序运行:

public class Main {
    public static void main(String[] args) throws Exception {

    //Lambda expressions which will be taken as arguments in method.

    Function<String,List<String>> flines = e->{
    };
    Function<List<String>,String> join = e ->{
    };
    Function<String,List<Integer>> collectInts = e->{
    };
    Function<List<Integer>,Integer> sum = e->{
    };

    // end of lambdas

    String fname = System.getProperty("C:/LamComFile.txt"); 
    InputConverter<String> fileConv = new InputConverter<>(fname);
    List<String> lines = fileConv.convertBy(flines);
    String text = fileConv.convertBy(flines, join);
    List<Integer> ints = fileConv.convertBy(flines, join, collectInts);
    Integer sumints = fileConv.convertBy(flines, join, collectInts, sum);

    System.out.println(lines);
    System.out.println(text);
    System.out.println(ints);
    System.out.println(sumints);

    List<String> arglist = Arrays.asList(args);
    InputConverter<List<String>> slistConv = new InputConverter<>(arglist);  
    sumints = slistConv.convertBy(join, collectInts, sum);
    System.out.println(sumints);

    }
}

如您所见,我需要创建一个类,该类将有一个方法(不允许重载),并且根据该方法将接收的内容,它必须返回正确的类型。

我有 InputConverter 类的开头,但我不知道如何使下一个函数从之前的函数中获取参数。

  public class InputConverter<T> {
      private T obj;

      public InputConverter(T obj) {
           this.obj = obj;
      }

      public <what goes here?> and_here convertBy(Function<In,Out>... funcs){

      }
  }

我想我可以做这样的事情吗?

if(funcs.length()==1){
    what? = funcs[0].apply(this.obj);
    return what?
}

最佳答案

你无法在 Java 的类型系统中表达这一点。接受对其他事物的需求。例如,您可以只编写 f1.andThen(f2).andThen(f3).andThen(f4)...

关于java - 变量(函数类型)参数计数和变量返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33333670/

相关文章:

java - 使用 Struts 2 内置 JSON 实用程序类

java - 如何使两个具有相同名称、签名和返回类型的方法的类表现得像它们实现相同的接口(interface)一样

java - BiFunction 接口(interface)中的 compose 方法是什么样的?

java - 我们如何/为什么可以说 java 8 中的功能接口(interface)是标记接口(interface)

java - 用 BinaryOperator 替换 switch

java - 无界通配符类型在运行时如何工作?

Java-Metro,从 glassfish 服务器端,我没有成功强制发送客户端 ssl 证书?

java - 输入 ANTLR4 没有可行的替代方案

C# - 如何将内联方法 Func<T> 定义为参数?

java - Java 泛型的问题