Java:如何从constuctor定义函数?

时间:2018-06-09 02:25:08

标签: java

我有一个java对象,我想从constuctor定义它的一个函数。如何在构造函数中定义对象的函数?

基本上是这样的。

public class Thing{

  public Thing(String str){
    //define F
  }

  public float F(float x){
   //to be defined
  }
}

我的目标是让Thing对象构造器以字符串的形式(例如“2 * x”)接受数学函数,解析它并定义F函数以预先形成该表达式。因此,如果我要创建一个新的Thing对象

Thing test = new Thing("2*x");

测试对象的F函数将像这样定义

public float F(float x){
  return 2*x;
}

我是以错误的方式解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

试试这个。

enter code here

答案 1 :(得分:0)

您应该将Function传递给构造函数:

public class Thing {

    private DoubleFunction<Float> func;

    public Thing(DoubleFunction<Float> func) {
        this.func = func;
    }

    public float F(float x) {
        return func.apply(x);
    }
}

用法:

DoubleFunction<Float> myFunc = d -> d * 2;
Thing thing = new Thing(myFunc);
thing.F(2.0); // Result in 4.0