Converter Strings em variaveis java

4 respostas
C

E o seguinte, eu preciso de uma função que receba uma string e consiga
converter essa string em um nome de variável. Simples. Strings se
transformando em variáveis!!! tipo:

String  var1;

String  var2;

String  var3;

System.out.println(var + i) ??

Porque alguém ia querer uma coisa dessa???
Explico. O meu programa vai criar uma certa quantidade de objetos, e eu
gostaria de que esses objetos fossem criados através da concatenação
de um
nome com um número que será incrementado.
exemplo:
obj1
obj2
obj3

4 Respostas

F

Porque vc não usa um Array ao invés de uma variável comum?

Por exemplo:

String var[] = new String[30];//entre colchetes coloque o número
                                                    //de objetos que vc vai criar.
// vc pode atribuir assim:
var[1]="primeira string";
var[2]="segunda string";

//ou pode atribuir usando um loop
for(int i=0;i<var.length;i++){
      var[i]="uma string qualquer";
}

Isso deve resolver, se vc souber a quantidade de objetos que será criada, porém se vc não souber aí eu aconselho vc procurar um material sobre a API Coleções, mais especificamente a class Vector do pacote java.util

té +

M

cara, valores strings sendo passados para nome de variáveis… isso é muito doido, não tem jeito não… acho q só javascript faz isso, com eval() :lol:

V

“cazevedo”:
E o seguinte, eu preciso de uma função que receba uma string e consiga
converter essa string em um nome de variável. Simples. Strings se
transformando em variáveis!!! tipo:

String  var1;

String  var2;

String  var3;

System.out.println(var + i) ??

Porque alguém ia querer uma coisa dessa???
Explico. O meu programa vai criar uma certa quantidade de objetos, e eu
gostaria de que esses objetos fossem criados através da concatenação
de um
nome com um número que será incrementado.
exemplo:
obj1
obj2
obj3


Cara, isso não faz muito sentido pra mim… mas se vc quiser saber o nome dos atributos de uma instancia de um objeto definido por uma classe podes fazer o seguinte:

public printFields(Object obj) { java.lang.reflect.Field[] fields = obj.getClass().getFields(); for (int i = 0; i < fields.length; i++) System.out.println(fields[i].getName()+"["+fields[i].getType()+"]"); }

Ultima pergunta, pq vc quer criar atributos em tempo de execução se o código prévio da classe não saberá qual o nome de cada atributo e não poderá fazer nada com eles?

Teoricamente, vc pode fazer tudo o q quiser com as classes ‘reflection’ mas não sei se vc vai conseguir fazer isto… fiquei curioso, vou testar algumas coisas aki

V
Minhas tentativas foram:
import java.lang.reflect.*;

public class Main {

 public Object objeto;

 Main() {
  objeto = new Object();
 }

 public static void main(String args[]) {
  try {
    Main m = new Main();
    m.dumpFields();
    //Field novo = m.getClass().getField("novo");
    //Field novo = (Field) Class.forName("java.lang.reflect.Field").newInstance();
    Field novo = m.getClass().getField("objeto");
    novo.setAccessible(true);
    novo.set(m,new Integer(1));
    m.dumpFields();
  } catch (Exception e) {e.printStackTrace();}
 }

 public void dumpFields() {
  Field[] fields = this.getClass().getFields();
  for (int i = 0; i < fields.length; i++)
   System.out.println(fields[i].getName()+" ["+fields[i].getType()+"]");
 }

}
Em nenhuma obtive êxito, experimente executar cada linha comentada em separado...
Criado 17 de dezembro de 2004
Ultima resposta 17 de dez. de 2004
Respostas 4
Participantes 4