gpt4 book ai didi

java - Java 的 C++ 仿函数,重载运算符 ()()

转载 作者:行者123 更新时间:2023-11-30 01:42:46 24 4
gpt4 key购买 nike

假设一个简单的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com