假设一个简单的 C++ 仿函数示例:
class Test2 {
private:
double a;
public:
Test2 (double a_) : a(a_){}
double operator () () {return 10*a;}
};
template <typename Function>
double test ( Function function ) {return function();}
int main(int argc, char* argv[]) {
double a = test( Test2(5) );
return 0;
}
有什么方法可以在 Java 中实现这种构造(例如使用 Functor 接口(interface))?你能给我一个简短的例子吗?感谢您的帮助。
最佳答案
在 Java 8 中,您可以使用 DoubleSupplier
从对象获取 double
值的接口(interface):
public class Test implements DoubleSupplier {
private double a;
public Test(double a) { this.a = a; }
public double getAsDouble() { return 10 * a; }
public static double test(DoubleSupplier ds) {
return ds.getAsDouble();
}
public static void main(String[] args) {
double a = test(new Test(5));
}
}
如果您不使用 Java 8,那么您可以创建自己的接口(interface)来实现:
public interface MyDoubleSupplier {
double getAsDouble();
}
关于java - Java 的 C++ 仿函数,重载运算符 ()(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005825/