Here's my problem. I have an interface with several getter methods and an implementation class.
Class MyInterface {
String getA();
String getB();
...
}
Class MyClass implements MyInterface {
}
I need to write some logic this to compare the values of the get methods between two objects of MyClass.
static List<Function> getters = List.of(MyInterface::getA, MyInterface::getB, ...); //this is hard-coded
for(Function getter : getters) {
if(getter.apply(obj1).equals(getter.apply(obj2))
//do something
}
However I try, I cant seem to get the syntax correct, and satisfy the "type" Gods. Please help.
With a @FunctionalInterface, I was able to get the List defined, although as a member variable and not static, like so.
@FunctionalInterface
interface GetterFunction {
String get();
}
List<GetterFunction> allGetters = List.of(this::getA, this::getB, ...)
But this seems ugly and feels like there is a better way.
I also do not want to do Reflections.
Why put all the getters in a list? If you're hardcoding them anyway, might as well write out the checks: