Como executar o contéudo de uma variável?

7 respostas
R

Exemplo

String declaracao = “Integer novo;”;

ai depois quero executar a variável declaracao

declaracao ira criar um Integer novo;

7 Respostas

Fellipex

hã???

Rodrigo_Sasaki

hmm… que? :slight_smile:

Hebert_Coelho

Vc quer exibir o texto para o usuário, esperar que o usuário digite algo e o retorno seja um integer?

Se não for isso… #fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

E

Ele está confundindo Java com JavaScript.

JavaScript tem o método eval, que permite fazer 99% das coisas que ele está pensando (mas não declarar uma variável em tempo de execução - o exemplo não funcionaria em JavaScript).

Java não permite fazer isso, e ponto final.

JavaThai

robertorp, mano talves vc não soube digitar direito a sua dúvida,mano posta uma explicação um pouco melhor sobre a sua dúvida assim alguem pode te ajudar.

Planc

Bom dia, acho que o que você está procurando seria mais ou menos isto?!

Só você adaptar para sua necessidade.

String nomeClasse = "ABC";
        // e caminhoClasseJava é (C:\WorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp5\wtpwebapps\SeuProjeto/classes/com/SuaClasse.java)
	String caminhoClasseJava = HibernateUtil.cPathReal + "/WEB-INF/classes/com/" + nomeClasse + ".java";

	StringBuilder codigoFonte = new StringBuilder();
	codigoFonte.append("package com;");
	codigoFonte.append("import java.util.List;");

	if (aImport != null) {
		for (Class cImport : aImport) {
			codigoFonte.append("import " + cImport.getName() + ";");
		}
	}

	codigoFonte.append("public class ").append(nomeClasse).append(" {  ");
	codigoFonte.append("   public Object executa(List args) throws Exception { ");
        // onde cFormula é o método escrito em uma String
	codigoFonte.append("      return ").append(cFormula).append("; ");
	codigoFonte.append("   } ");
	codigoFonte.append("} ");
        
        FileWriter arquivoFonte = new FileWriter(caminhoClasseJava);
	arquivoFonte.write(codigoFonte.toString()); // grava no arquivo o codigo-fonte Java
	arquivoFonte.close();

        // onde caminhoJar é (C:\WorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp5\wtpwebapps\SeuProjeto/lib/SeuProjeto.jar)
	Main.compile(new String[] { "-classpath", caminhoJar, caminhoClasseJava });

	String programa = caminhoClasseJava.substring(caminhoClasseJava.lastIndexOf("/") + 1, caminhoClasseJava.lastIndexOf("."));

	Class<?> clazz = Class.forName("com." + programa);
	Method metodo = clazz.getDeclaredMethod("executa", List.class);
	Object retorno = metodo.invoke(clazz.newInstance(), args);
B

Eu recomendo pensar duas vezes essa ideia de criar código em tempo de execução, ou usar outra linguagem própria para isso.

Se quiser inserir algum código em tempo de execução tem bibliotecas que fazem AOP, e mexem com bytecode. Para rodar linguagens de script dentro do Java, tem o Java Scripting Engine que vem com o Java 6 e já tem suporte a Javascript instalado(engine Mozilla Rhino).

Criado 24 de outubro de 2012
Ultima resposta 26 de out. de 2012
Respostas 7
Participantes 8