Dúvida: Criando classes com a chamada de um método

16 respostas
DoomGuy

Pessoal, Boa Tarde/dia/noite!

Gostaria de saber se, a cada chamada de método, é possível criar uma classe diferente e o mesmo, ficando armazenado em um diretório definido.
Algo parecido com:

public class exemplo{
static String = "Classe Exemplo";

public void CriaClasse(String x){
exemplo x = new exemplo();
}
public class Testa exemplo{
public static void main(String [] args){
exemplo p = new exemplo();

p.CriaClasse(NovaClasse);
}
}

ou seja, a cada chamada do método, criar uma nova classe, desse modo, ficnado com os dados nas variáveis, armazenadas.

Tem jeito de fazer isso??

Obrigado.

OBS: Fiquei com essa duvida pq não sei mexer com banco de dados. Devido a isso, com um sisteminha que eu criei apenas para testar o que acabei de aprender, gostaria de saber se existe algo como o dito acima. Obrigado.

16 Respostas

L

Oi,

É possivel sim…
Use nomes diferentes ok?
Mas se vai fazer a utlização de banco de dados não precisa ficar criando objetos, crie o objeto, e chame os metodos DAO para guardar os dados, e depois voce pode reutilizar o objeto…

DoomGuy

Editei o meu tópico com a duvida correta agora, espero que entendam o que quero dizer. Não vou utilizar banco de dados, até pq não sei mexer com isso. Mais pra frente, quando aprender mais, ok, ams agora, quero focar no java.

Obrigado.

Mephy
public class TestaExemplo {
  private ArrayList<Exemplo> antigosRegistros;

  public TestaExemplo() {
    antigosRegistros = new ArrayList<Exemplo>();
  }

  public static void main() {
    new TestaExemplo().executar();
  }

  private void executar() {
    Exemplo a = new Exemplo();
    a.setAlgo(valor);
    a.setOutraCoisa(outroValor);
    antigosRegistros.add(a);
  }
}

algo parecido com isso, se entendi a dúvida direito: cria um novo objeto (não classe) a cada chamada do método, gravando todos os anteriores em algum local (no caso, um ArrayList)

L

Respondendo a sua pergunta…

Sim isso é possivel!

DoomGuy

Não senhores, eu quiz dizer Classe mesmo, o próprio arquivo *.java, não um novo objeto que vai ficar alocado na memória temporariamente. Lá no 1º exemplo que eu coloquei, a novo objeto que foi criado, ele não deve ficar só na memória. Por exemplo, Imaginem a situação :

1º Crio uma classe qualquer que possui um método;
2° Nesse método existe um código que cria uma classe, um arquivo novo .java com os atributos dados durante a execução do programa.

Essa é a lógica, compreendem? Por isso eu pergunto: Da pra fazer isso? Se sim, como?

Mephy

Não dá, a partir do momento que você escreve uma classe, ela precisa passar pelo processo de compilação… então a menos que sua aplicação acesse a JDK do cliente e faça uma compilação em run-time do projeto inteiro (javac), feche a aplicação atual e reinicie a execução do ponto zero a partir do outro bytecode gerado, isso realmente não é possível

L

2 programadores curtem isso
AUIhIUAHiUAH

oitathi

Não sei se entendi bem, mas vai lá:

public class TheClass {

private String anything;


public TheClass (String anything){
    this.anything=anything;
}

}

public class StoreClass {

private LinkedList lista = new LinkedList();


public void putOnList(TheClass theClass){
    lista.add(theClass);

}

}

public static void main(String[] args) {

StoreClass storing = new StoreClass();



    TheClass one = new TheClass("aaa");
    TheClass two = new TheClass("bbb");
    TheClass three = new TheClass("ccc");
    TheClass four = new TheClass("ddd");
    TheClass five = new TheClass("eee");


    storing.putOnList(one);
    storing.putOnList(two);
    storing.putOnList(three);
    storing.putOnList(four);
    storing.putOnList(five);

}
}

oitathi

Agora se vc quer guardar isso na memória, bom, vc pode transformar cada uma das classes em txt por exemplo, contendo além dos atributos que vc quer um indice. Daí, vc cria um metodozinho q lê esse txt e toda vez que vc quiser gravar uma nova classe, ele grava com o indice incrementado.

DoomGuy

É pelo jeito é complicado demais. Esse método da leitura de txt pareceu bem mais palpável( e facil =D ). Vc pode me dizer como fazer?? Uma dica pelo menos =)

Obrigado.

oitathi

A sua classe só vai ter atributos? ou vai ter métodos tb?

DoomGuy

Ela possui atributos e métodos. Na vdd, esse método de escrita seria mais dos métodos dela.

oitathi

bom, os metodos vc vai ter q escrever a mão no txt.
agora os atributos, vc dah um get em cada um deles e depois grava no txt (dah uma olhada em manipulações de arquivos pra ver como grava e le um arquivo)
mas antes de tudo vc escreve um indice, e toda vez q vc for gravar outra classe no txt vc incrementa esse indice .
Daí vc pode achar cada uma das suas classes por um for básico
Porém, quero q saiba q o q o java vai ler, serão apenas Strings. Quando ele ler o arquivo ele não vai entender q aquilo é uma classe. Eu não sei o q exatamente vc quer fazer, mas até daria pra fazer um metodo para q vcc onseguisse ler o txt e joga-lo em uma classe, mas deste de que sua classe só tivesse atributos e não métódos.

DoomGuy

É, isso ta um poco além do que eu sei. Pelo jeitom vo ter que estudar mais isso x.x.

Mas de qualqeur maneira obrigado!! =)

ruben_m

A tua duvida é mais complexa que Ler de ficheiros de texto ou de um banco de dados… para fazer isso teras de fazer muito trabalho para nada

adriano_si

Doom… faça o seguinte, nos fale a sua necessidade.

Você quer fazer um gerador de código ??

Pois para criar um arquivo .java o único objetivo seria gerar código automático.

Criado 25 de agosto de 2011
Ultima resposta 26 de ago. de 2011
Respostas 16
Participantes 6