Carregue uma classe usando reflexão e edite as variáveis durante o tempo de execução
Ok, então eu tenho um arquivo java que está carregando outra classe e eu quero que o arquivo java seja capaz de editar e ler variáveis da classe que está rodando.
Por exemplo: Eu tenho um botão que, quando pressionado, define uma variável (este é o arquivo de classe). Eu quero que o arquivo java que está carregando esta classe seja capaz de ver o novo valor da variável lê-lo, configurá-lo e fazer o que for necessário. E eu quero o novo valor que está definido para aparecer na classe java em execução.
Isso é o que eu tentei até agora, mas quando tento editar os valores como obter baseX, ele não aparece na classe em execução. Além disso, o valor baseX deve mudar quando eu faço coisas na classe em execução, mas o material não é impresso na tela quando eu os altero. É como se o reflexo não pudesse ler coisas em tempo de execução. Então o que faz?
Class c = Class.forName("Client");
for (Method m : c.getMethods()) {
if (m.getName().contentEquals("main")) {
Object[] passedArgs = { args };
m.invoke(null, passedArgs);
}
}
Object instance = c.newInstance();
Field baseX = c.getField("baseX");
Field loggedIn = c.getField("loggedIn");
boolean gotValues = false;
while(!gotValues) {
boolean loggedin = loggedIn.getBoolean(instance);
if(loggedin) {
System.out.println(baseX.get(instance));
} else {
System.out.println(loggedin);
loggedIn.setBoolean(instance, true);
}
}
Além disso, os métodos get / setter funcionariam se eles trabalhassem em tempo de execução e eu pudesse fazer com que, quando o botão x fosse pressionado, a variável y mudasse na tela. O que é um bean java? E se eu quisesse invocar um método e não obter um valor? Ou se eu quisesse adicionar meus próprios métodos / código?