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

标签 java c++ interface operators functor

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

相关文章:

c# - IComparable 和 IEquatable 接口(interface)有什么区别?

java - 避免 Android 多次垃圾收集调用的高效循环

java - ImageView,选择某部分Android

java - 响应数据未显示

c++ - Caffe层创建失败

c++ - 3d 到 2d 图像转换 - PointCloud 到 OpenCV 图像 - C++

java - Java 接口(interface)定义中的语句在什么上下文中执行?

java - JTextfield 的随机数

c++ - Qt 线程计算输出到 GUI 中的自己的小部件?

Java API 远程访问大型机