String em nome de variável

Olá, gostaria de saber se tem como colocar o conteúdo de uma string para referenciar uma variável??

Vou mostrar qual é minha idéia:

Tendo esta classe

[code] public static void main(String args[]){

    create(Diagrama,"[b]Planta[/b]");
    
}[/code]    

Gostaria de poder fazer assim:

[quote] public void create(Diagrama diagrama,String nome) {
try {
Planta codPlanta = diagrama.getCod[b]nome/b;
}
}[/quote]

Tem como?

Gostaria de saber se essa é a melhor forma de tornar o código genérico… vlw

Não entendi muito bem seu codigo…
mas acho que você poderia tentar utilizar um java.util.HashMap …

Caso não for o bastante, você pode implementar uma interface ou utilizar Reflection

o.O

Eu tbm não entendi muito bem o que vc quiz dizer, nem o seu código.

Mas usando minhas técnicas de bola de cristal, eu chuto que vc tá querento passar uma String direto para o método, é isso?

ao invés de fazer

String valor = "[b]Planta[/b]"
create(Diagrama, valor);

vc quer isso:

create(Diagrama, "[b]Planta[/b]");

Bom, se é isso mesmo, tem jeito sim, sem problemas passar direto um valor String para o método.

Acho que ele quer que uma String se torne o nome de uma variável, atributo!

Semelhante ao que é possível fazer em ActionScript…

É isso??

Se for, penso que não é possível, vou acompanhar o tópico!

[quote=Jesuino Master]Acho que ele quer que uma String se torne o nome de uma variável, atributo!

Semelhante ao que é possível fazer em ActionScript…

É isso??

Se for, penso que não é possível, vou acompanhar o tópico![/quote]

AEEE Jesuinooo! finalmente alguem com cérebro… Pelamor!! os kara ai em cima num devem nem te lido o título

eh isso aii… colocar parte de uma string como sendo o nome de una variabllee!!

floww

A resposta simples é não.

Voce nao consegue fazer isso em runtime.

Mas voce pode usar o JavaAssist para modificar os bytecodes e invokar via Reflection… por que mesmo alterado na hora da compilação os métodos não existem o que vai resultar em um erro de compilação.

[quote=GioJackson][quote=Jesuino Master]Acho que ele quer que uma String se torne o nome de uma variável, atributo!

Semelhante ao que é possível fazer em ActionScript…

É isso??

Se for, penso que não é possível, vou acompanhar o tópico![/quote]

AEEE Jesuinooo! finalmente alguem com cérebro… Pelamor!! os kara ai em cima num devem nem te lido o título

eh isso aii… colocar parte de uma string como sendo o nome de una variabllee!!

floww[/quote]

Amiguinho,

Todos aqui tem cérebro.

Utilizar esse tipo de funcionalidade é muito fácil em uma linguagem de scripting, como ActionScript ou Javascript, que são interpretadas em tempo de execução, mas não existe esse tipo de recurso em Java que é uma linguagem compilada.

O que eu acho mais apropriado para você é utilizar um mapa…


public static Map<String, Object> mapa = new HashMap<String, Object>();

public static void main(String args[]){
    mapa.put("Planta", new Planta());
    mapa.put("Bola", new Bola());

    create("Planta");
}
//.....................................
public void create(String nome) { 
    Planta p = mapa.get(nome);
}

Que nada, simplesmente tive muita necessidade disso também quando vim de ActionScript para Java. Depois vi que com a perfeição de Java, sempre existe um solução para estes problemas!

Com certeza! Em ActionScript não podemos viver sem isso ae, pois muitos clipes são gerados em runtime e temos que referenciar através de um padrão. Uma coisa que fazem em jogos, por exemplo, é gerar diversas instâncias de um MovieClipe através de loops, depois, a cada evento, sair verificando todas com um for semelhante ao que gerou os MovieClips… Haja imaginação!

Bem, mas o fórum é de Java, hehe.

Mas assim teríamos todos os objetos carregados na memória sem uso!

Que tal uma factory?

Ou você pode usar a Composição e dar um comportamento misto para um mesmo objeto! Mudando em Runtime esse comportamento, ou seja, Delega a atividade para uma interface, e faz classes concretas para conseguir diversos comportamentos. Isso, ele mesmo, Strategy

Resumindo, você pode ter um método que leia uma String e gere um determinado objeto, ou você envia uma String para um método que muda o comportamento de uma classe.

Mas o que você deve fazer mesmo é ver se não há outra solução. Envie detalhes do seu problema e assim poderemos encontrar uma solução legal!

Pessoal, desculpem por ressussitar o tópico, mas como o autor não voltou a perguntar acredito que eu possa esclarecer um problema que está me encomodando há algum tempo:

Seguinte, o que eu preciso é ler um xml e pegar o valor das tags (ler o xml não é a parte importante aqui, ja que acredito que possa fazer isso de várias maneiras) e atribuir em atributos de um DTO (ou variável que seja)… assim:


XML

<xmlAplicacao>
<parametro nome=“nomePessoa” valor=“Joao”/>
<parametro nome=“idadePessoa” valor=“15”/>
<parametro nome=“tipoDocto” valor=“RG”/>
<parametro nome=“numDocto” valor=“9.999.999-9”/>
</xmlAplicacao>


Atributos DTO

private String nomePessoa;
private String idadePessoa; //pode ser String mesmo que ja serve muuuuito bem
private String tipoDocto;
private String numDocto;

//Aqui getters e setters :wink:


Então… Usar o conteúdo do parâmetro “nome” do xml pra setar os atributos do DTO com o mesmo nome (ou variáveis quaisquer com o mesmo nome) seria possível? Se sim, como?

Desde já agradeço.