• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Nazgulled

Algum problema em ter uma referência para classe X dentro dela própria?

7 mensagens neste tópico

Acho que o título do tópico diz tudo, mas o que estou a fazer é isto:

public class Teste {

private static Teste TESTE;

private String varInstancia;

public Teste() {
	// Qualquer coisa...
}

public static void main(String[] args)  {
	TESTE = new Teste();
}

private static void MetodoQueFazQQCoisa() {
	TESTE.varInstancia = "CENAS...";
}
}

Algum problema nisto?

É que outra solução seria, no main() criar uma variável do tipo Teste e depois tinha de andar a passar a referência por parâmetros por todos os métodos e isso é um bocado chato...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tem problemas nenhuns. Mas esse código não tem muita lógica, já que podes simplesmente ter o método ser não estático.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não fazes singleton? Ficaria algo tipo

public class Teste {

private static teste TESTE = new Teste();

private String varInstancia;

private Teste() {
	// Qualquer coisa...
}

        public static String getVar(){
            return teste.varInstancia ;
        }

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@Betovsky

Era uma hipótese e eu pensei nisso. Mas tipo, aquele método estático, no meu trabalho, são vários e são apenas menus (praticamente) pelo que teria mais lógica (no meu ponto de vista) serem estáticos porque não não fazem realmente parte da classe/objecto em si. Só por isso... Ou será que estou a "criar" um problema onde ele não existe e se calhar posso simplesmente codificar os métodos removendo o estático e pronto? É que eles só servem mesmo para menus e operações de menus, só que por vezes preciso de aceder a certas variáveis de instância...

@magician

Porque isso do Singleton já foi falado no outro tópico e depois de muitos testes e muitas chatices não resultou para o que eu quero... Eu precisava que o Singleton fosse serializável (e consegui esta parte), mas estava a ter demasiados problemas a tentar carregar um objecto previamente guardado no disco. E como tenho dito, estas dúvidas é para um trabalho para a universidade o qual tem o prazo estipulado para domingo e ainda me faltam muitas coisas pelo que não tenho muito tempo de estar a mudar demasiado código e a tentar solucionar problemas. A conclusão é que o Singleton está fora de questão, não tenho tempo para resolver os problemas que me estão a aparecer, mas era a solução que que queria. Paciência, fica para a próxima...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(...) Mas tipo, aquele método estático, no meu trabalho, são vários e são apenas menus (praticamente) pelo que teria mais lógica (no meu ponto de vista) serem estáticos porque não não fazem realmente parte da classe/objecto em si. Só por isso... Ou será que estou a "criar" um problema onde ele não existe e se calhar posso simplesmente codificar os métodos removendo o estático e pronto? É que eles só servem mesmo para menus e operações de menus, só que por vezes preciso de aceder a certas variáveis de instância...

Não é a primeira vez que digo isto, e até começo a pensar que raio de POO te ensinam por aí, mas estás a pensar mal o problema.

Neste caso nem sei que problema tens, não faço ideia porque raio métodos seriam estáticos porque "não não fazem realmente parte da classe/objecto". Se não fazem parte, estão lá mal, se são lá precisos então fazem parte.

Nem imagino o que estejas a fazer com menus para precisares de métodos estáticos. Mais uma vez digo, métodos e atributos estáticos são métodos e atributos da classe, não são para ser usados só porque parece dar jeito.

Seja como for, acho que estás a criar um problema que não existe, não posso dizer que seja só remover o classificador estático e voilá, tudo passa a funcionar como devia, ainda por cima não conhecendo o trabalho em profundidade, nem a forma como estruturaste o código. Mas pelo que descreveste nos vários tópicos não me parece que estejas a seguir o caminho mais correcto, espero estar engando, mas não sei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a pensar nada mal o problema, eu sei bem aquilo que estou a fazer e não existem muitas soluções para fazer o que pretendo fazer. E a minha dúvida aqui está pouco relacionada com as dúvidas dos outros tópicos...

Eu vejo os métodos/variáveis estáticas como um Módulo em VB.NET, algo que é "tipo uma classe" mas não podes estanciar, simplesmente acedes e pronto. Como em C, tens variáveis globais e funções que tu chamas e pronto, não precisas de criar um objecto. É mais ou menos assim que eu vejo as coisas estáticas.

Eu posso muito bem remover todos os "static" de todas as funções de menus (com excepção do main claro) e por aquilo a funcionar direito, basta substituir TESTE por this e fica tudo a funcionar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu vejo os métodos/variáveis estáticas como um Módulo em VB.NET, algo que é "tipo uma classe" mas não podes estanciar, simplesmente acedes e pronto. Como em C, tens variáveis globais e funções que tu chamas e pronto, não precisas de criar um objecto. É mais ou menos assim que eu vejo as coisas estáticas.

Essa é uma visão muito simplista, que pode trazer muitos dissabores. Mas se dizes que estás a perceber o problema, ainda bem, como disse, posso e espero estar engando.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora