想象一下我有一堂课
class A {
int a;
int b;
A(int a, int b) {
this.a=a; this.b=b;
}
int theFunction() {
return 0;
}
void setTheFunction([...]) {
[...]
}
}
对于我实例化的每个新对象,我希望能够theFunction()
通过调用setTheFunction( [...] )
. 例如,我想做这样的事情:
A test = new A(3,2);
test.setTheFunction ( int x = a*b; return x*x+2; );
System.out.println(test.theFunction()); // Should return (3*2)*(3*2)+2 = 38
或者是这样的:
A test2 = new A(1,5);
test.setTheFunction ( for(int i=0; i<b; i++) a=a*b*i; return a; );
现在,我当然可以在 A 类中编写所有这些函数,并使用 switch 语句来确定要选择哪个。但是,如果我不想theFunction()
在我的 A 类中使用硬编码算法,有没有办法做类似于上面的事情?会是什么样setTheFunction()
子?你必须通过什么类型的论证?