Это идея того, как мы можем достичь этого с помощью отражения:
class Foo {
int a;
int b;
List<Abc> list;
}
class Abc {
int c;
int d;
}
public class FillSettersThroughReflection {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Method[] publicMethods = Foo.class.getMethods(); //get all public methods
final Foo foo = Foo.class.getDeclaredConstructor().newInstance(); //will only work when you will have default constructor
//using java 8
Stream.of(publicMethods).filter(method -> method.getName().startsWith("set"))
.forEach(method -> {
//you can write your code
});
//in java older way
for (Method aMethod : publicMethods) {
if (aMethod.getName().startsWith("set")) {
aMethod.invoke(foo, <your value>); //call setter-method here
}
}
}
}
вы можете поместить свои условия после set
фильтра, а затем вызвать invoke
метод после значения передачи.