0

据我了解,FunctionalInterface 是确保传递给另一个方法的方法的参数和返回类型是正确类型的契约。例如,

@FunctionalInterface
private interface myFunctionType<R> {
    R execute() throws Exception;
}

允许您编写一个函数:

private <T> T methodCaller(final myFunctionType<T> operation) {
     return operation.execute();
}

其中“操作”可以是任何接受 0 个参数并返回 T 类型对象的函数。有没有办法编写“methodCaller”以便“操作”可以是任何接受任何参数的函数(但仍返回 T 类型的对象)? 如果不是,为什么?

本质上是这样的:

public T createAnimal(int age) {}
public T createLamp(String style, boolean secondHand) {}

methodCaller(() -> createAnimal(5));
methodCaller(() -> createLamp("plain", true));

但它适用于任何带有任何参数的函数,它仍然返回 T。

4

0 回答 0