Galera,
Queria saber se tem como eu inserir atributos a uma classe via Reflection?
Ou se tem algum framework que faça isso.
Att
Galera,
Queria saber se tem como eu inserir atributos a uma classe via Reflection?
Ou se tem algum framework que faça isso.
Att
Qual é o objetivo, exatamente?
Se for criar novos atributos, o reflection não permite, pois, ele precisa de uma classe existente (isso significa que ela já está compilada) e não há um método setAttribute, por exemplo.
Entao vamos la!!!
Eu tenho a minha aplicacao que usa servidor e cliente. Estou trabalhando com GWT.
O problema é o seguinte:
O projeto tem que ser todo dinamico, como assim todo dinamico, em uma unica tela do GWT eu tenho que montar as telas de acordo com o que vem do servidor.
A tela de pesquisa vai usar o CellTable do GWT, so que para gerar o CellTable eu tenho que passar quais campos vou criar de uma determianda Classe, mais ou menos assim:
final CellTable<ClasseQueVaiRepresentarATabela> table = new CellTable<ClasseQueVaiRepresentarATabela>();
//Criando a coluna
TextColumn<ClasseQueVaiRepresentarATabela> column = new TextColumn<ClasseQueVaiRepresentarATabela>() {
@Override
public String getValue(ClasseQueVaiRepresentarATabela object) {
return object.campoQueCriei;
}
};
table.addColumn(column, "Nome da minha coluna");
Sei que isso é uma coisa muito cabulosa, ma quem pode manda e quem tem juizo fica doido rapidao!
Não sei se isso vai ser possivel.
Se alguem tiver uma ideia melhor sera muito bem vinda.
Att
Java != Javascript
Você não pode acrescentar novos campos a uma classe.
Entretanto, você pode criar um mapa (que é, na verdade, a maneira como o JavaScript implementa os campos em uma classe) para mapear um nome de atributo ao seu valor.
Exemplo:
Map<String, Object> atributos = new HashMap<String, Object> ();
...
atributos.put ("campoQueCriei", "123");
...
Object obj = atributos.get ("campoQueCriei");
Eu sei!
Mas o grande problema esta nesse camarada:
TextColumn<ClasseQueVaiRepresentarATabela> column = new TextColumn<ClasseQueVaiRepresentarATabela>() {
@Override
public String getValue(ClasseQueVaiRepresentarATabela object) {
return object.campoQueCriei; // AQUI OH!!!! Esse cara tem que ser um atributo da classe que estou ussando.
}
};
table.addColumn(column, "Nome da minha coluna");