iKileey Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 Bom, minha dúvida é se realmente utilizar métodos em 'static' causa lag, eu acho que na teoria era pra dar um certo lag, mas não sei ao certo, enfim causa ou não lag? (Se sim, por favor justifique o motivo). Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 Não. Você pode (ou deve) usar static pra métodos "uteis", funções puras etc... Exemplo de quando usar static: Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático,senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram. Usando static: public class StringUtil { public static String capitalizar(String texto) { // lógica aqui } } Ai você usaria assim: String stringCapitalizada = StringUtil.capitalizar("uma string aqui"); Se não o método não fosse estático você teria que fazer isso: StringUtil stringUtil = new StringUtil(); String stringCapitalizada = stringUtil.capitalizar("uma string aqui"); Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente. Exemplo de quando não usar. // Representa uma pessoa class Pessoa { private String nome; public Pessoa(String nome) { this.nome = nome; } public void apresentar() { System.out.println("Olá, meu nome é " + nome); } } Pessoa joao = new Pessoa("joao"); joao.apresentar();// Olá, meu nome é joao Pessoa maria = new Pessoa("maria"); maria.apresentar();// Olá, meu nome é maria Espero ter ajudado, não sou muito bom com explicação. 2 Link para o comentário Compartilhar em outros sites More sharing options...
Pica-Pau Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 Se usado indevidamente sim '-' Link para o comentário Compartilhar em outros sites More sharing options...
Guest Darwin Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 Vamos dar um exemplo. Eu tenho uma casa e nesta casa eu tenho uma geladeira,e você precisa entrar toda hora na casa para abrir a geladeira,só que eu deixo a casa e geladeira fechada.Oque vale mais a pena: * Abrir toda hora a casa,abrir toda hora a geladeira,pegar o que precisa,fecha geladeira,fecha casa. * Abrir uma vez a casa,abrir uma vez a geladeira,pegar oque precisa e sair. Oque econômia mais tempo ? Pensa na seguinte forma no static. Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 (editado) Não diria lag... Mas eu normalmento uso em classes Factory. Da uma olhada nisso: http://leandrokersting.blogspot.com.br/2008/01/quando-e-porqu-usar-static.html Editado Abril 24, 2017 por TequilAxBr Link para o comentário Compartilhar em outros sites More sharing options...
MrPowerGamerBR Postado Abril 24, 2017 Denunciar Compartilhar Postado Abril 24, 2017 Não muda nada usar static ou não. O único jeito que pode acontecer um memory leak com static (em servidores de Minecraft) é se você guardar a instância do seu plugin em uma variável e ficar dando reload no servidor, aí dá um memory leak. Mas você também não deve abusar static em todo lugar, eu fazia isto antes e... bem, o código-fonte fica muito bagunçado já que Java é OOP. Como o leonardosc disse... Não. Você pode (ou deve) usar static pra métodos "uteis", funções puras etc... Exemplo de quando usar static: Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático,senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram. Usando static: public class StringUtil { public static String capitalizar(String texto) { // lógica aqui } } Ai você usaria assim: String stringCapitalizada = StringUtil.capitalizar("uma string aqui"); Se não o método não fosse estático você teria que fazer isso: StringUtil stringUtil = new StringUtil(); String stringCapitalizada = stringUtil.capitalizar("uma string aqui"); Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente. Exemplo de quando não usar. // Representa uma pessoa class Pessoa { private String nome; public Pessoa(String nome) { this.nome = nome; } public void apresentar() { System.out.println("Olá, meu nome é " + nome); } } Pessoa joao = new Pessoa("joao"); joao.apresentar();// Olá, meu nome é joao Pessoa maria = new Pessoa("maria"); maria.apresentar();// Olá, meu nome é maria Espero ter ajudado, não sou muito bom com explicação. Um exemplo prático em servidores de Minecraft é deixar a API do seu plugin em uma classe estática, para que outros developers não precisem fazer complexidades para conseguir acessar a sua API. 2 Link para o comentário Compartilhar em outros sites More sharing options...
iKileey Postado Abril 25, 2017 Autor Denunciar Compartilhar Postado Abril 25, 2017 Não. Você pode (ou deve) usar static pra métodos "uteis", funções puras etc... Exemplo de quando usar static: Você tem um método utilitário que "capitaliza" a primeira de uma String, nesse caso seria melhor você usar um método estático, senão você teria que criar uma instancia (ou usar singleton) da classe toda vez que fosse utilizar esse método e isso consumiria ram. Usando static: public class StringUtil { public static String capitalizar(String texto) { // lógica aqui } } Ai você usaria assim: String stringCapitalizada = StringUtil.capitalizar("uma string aqui"); Se não o método não fosse estático você teria que fazer isso: StringUtil stringUtil = new StringUtil(); String stringCapitalizada = stringUtil.capitalizar("uma string aqui"); Como disse acima, você teria que criar uma instancia cada vez que fosse utilizar esse método, assim gastando recursos desnecessariamente. Exemplo de quando não usar. // Representa uma pessoa class Pessoa { private String nome; public Pessoa(String nome) { this.nome = nome; } public void apresentar() { System.out.println("Olá, meu nome é " + nome); } } Pessoa joao = new Pessoa("joao"); joao.apresentar();// Olá, meu nome é joao Pessoa maria = new Pessoa("maria"); maria.apresentar();// Olá, meu nome é maria Espero ter ajudado, não sou muito bom com explicação. Não muda nada usar static ou não. O único jeito que pode acontecer um memory leak com static (em servidores de Minecraft) é se você guardar a instância do seu plugin em uma variável e ficar dando reload no servidor, aí dá um memory leak. Mas você também não deve abusar static em todo lugar, eu fazia isto antes e... bem, o código-fonte fica muito bagunçado já que Java é OOP. Como o leonardosc disse... Um exemplo prático em servidores de Minecraft é deixar a API do seu plugin em uma classe estática, para que outros developers não precisem fazer complexidades para conseguir acessar a sua API. Obrigado, estava com um pulga atrás da orelha pensando nisso :bigsmile: Link para o comentário Compartilhar em outros sites More sharing options...
AlexHackers Postado Abril 25, 2017 Denunciar Compartilhar Postado Abril 25, 2017 Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas. Atenciosamente, Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
iKileey
Bom, minha dúvida é se realmente utilizar métodos em 'static' causa lag, eu acho que na teoria era pra dar um certo lag, mas
não sei ao certo, enfim causa ou não lag? (Se sim, por favor justifique o motivo).
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados