If my method call is:
obj.getLevelOne().getLevelTwo().getValue();
And I want to pass this method as a parameter below:
boolean checkValue( obj, method , value)
{
return obj.method() == value;
}
I want to call the checkValue method like this:
checkValue(obj, "getLevelOne().getLevelTwo().getValue", value);
Is there any way I can accomplish this? Please help.
If you really want to do something like this, i recommend either:
1.use a Callable and create anonymous subclasses. NOTE: this is somewhat similar to the approach given above with “MyGetter”, except that it uses Callable. There’s no need for our own interface, since we can use something that was intended for this purpose that’s built into the jdk.
2.using some sort of EL package (mvel works well as an embedded library).
You could then do: “levelOne.levelTwo.value” as your expression, and use mvel to evaluated in on “obj”.
Of course, the first one is much more typesafe, though your “expression” would be done at compile time since you’re explicitly coding it into the callable implemention. The second approach is more dynamic and lets you compute the expression at runtime.