Присвойте значение методу установки с помощью отражения - PullRequest
0 голосов
/ 18 июня 2020

Как мне создать объект во время выполнения и установить значения для всех значений установщика в объекте? Я создаю классы ниже во время выполнения, используя поле jsonschema2pojo.Classes,

class Foo
(

int a ;
int b;

List <Abc> list;
//getters and setter ommited
}

class Abc
{

int c ;
int d;

}

1 Ответ

0 голосов
/ 18 июня 2020

Это идея того, как мы можем достичь этого с помощью отражения:

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 метод после значения передачи.

...