Pessoal, alguém sabe dizer se tem como eu criar classes Java dinamicamente???
Não seria o .class e sim o .java!
O .class sei que tem como por exemplo pelo Javassist…
Alguem sabe como posso fazer pra gerar um .java?
Ou eu teria que criar um arquivo texto na mão mesmo e renomear pra .java?
Alguma outra maneira???
Será que o CGLIB faz isso?
M
Marky.Vasconcelos
Ai eu já não sei, mas qual é a sua intenção?
Apenas criar o arquivo e escrever nele?
Filef=newFile("C:/Teste.java");try{f.createNewFile();}catch(IOExceptione){e.printStackTrace();}PrintWriterpw=null;try{pw=newPrintWriter(newFileOutputStream(f));}catch(FileNotFoundExceptione){e.printStackTrace();}pw.append("public class Teste {\n");pw.append("public static void main(String... args){\n");pw.append("System.out.println(\"File\");\n");pw.append("}\n}");pw.flush();pw.close();
M
MrDataFlex
usa o maker… kkkkkkkkkkkkkk brincadeira!
J
joca_java
Sim sim… queria saber se teria algo mais rápido… que criar o arquivo…
é que to querendo automatizar algumas coisas… ai preciso inserir anotações
em atributos de classes criadas sacasse? Na verdade seria editar essa classe…
K
kicolobo
Sugestão: ao invés de criar classes Java, utilize alguma linguagem dinâmica para Java, como por exemplo Groovy, JRuby, Rhino ou qualquer outra.
PS: só por curiosidade, por que gerar as classes Java dinâmicamente?
J
joca_java
kicolobo:
Sugestão: ao invés de criar classes Java, utilize alguma linguagem dinâmica para Java, como por exemplo Groovy, JRuby, Rhino ou qualquer outra.
PS: só por curiosidade, por que gerar as classes Java dinâmicamente?
Opa kicolobo, na verdade não seria nem gerar novas… desculpe a má forma de expressão… e sim alterar essas classes. Como por exemplo,
adicionar uma anotação em um atributo.
Pensei que tinha como fazer via Reflection…
M
marcelo_mococa
você quer adicionar funcionalidades no objeto em tempo de execução?
se for isso, porque não tenta criar um proxy do objeto?
em ultimo caso, o javaassist pode te ajudar.
R
rubinelli
Eu vejo algumas saídas aí.
A mais complexa é usar um parser com uma gramática Java para avaliar o seu .java e inserir as anotações que você quer. A vantagem é que você escreve um arquivo totalmente válido, que vai compilar mesmo que não passe pelo seu pré-processador, não vai aprecer com erros no seu Eclipse ou Netbeans, e você não tem que marcar com nada especial para funcionar.
A mais simples é usar um template engine. A desvantagem é que o código original não é compilável, então você perde o apoio do seu IDE.
A solução intermediária é usar uma notação que possa ser ignorada, semelhante por exemplo a Javadocs, e fazer o seu parsing com uma gramática mais simples. Provavelmente dá pra fazer só com expressões regulares, se você não quer nada avançado.