Meados Posted December 26, 2009 at 06:45 PM Report Share #302478 Posted December 26, 2009 at 06:45 PM Boas pessoal, estou a realizar um trabalho no qual estou a implementar a pattern STATE. No entanto esta-me a dar um erro quando crio um novo objecto. public interface Modo { // Definição das tarefas que o state tem de fazer public void paint(Graphics g); public void mouseClicked(MouseEvent e); public void mouseMoved(MouseEvent e); } A interface. *ERRO: at aplicacao.InserirTorre.<init>(InserirTorre.java:6) *public class InserirTorre extends BloonsTower implements Modo{ public void paint(Graphics g){ torreSel.desenharRaioAccao(g); torreSel.desenhar( g ); } public void mouseClicked(MouseEvent e){ insereTorre( e.getPoint() ); modo = SELECT_TORRE; } public void mouseMoved(MouseEvent e){ torreSel.setPosicao( e.getPoint() ); } } O objecto que implementa a interface. **protected Modo INSERIR_TORRE = new InserirTorre(); **ERRO: at aplicacao.BloonsTower.<init>(BloonsTower.java:113) Onde começam os problemas. O erro que obtenho a criar o objecto inserir torre é o seguinte: Exception in thread "main" java.lang.StackOverflowError at javax.swing.plaf.basic.BasicTextAreaUI.propertyChange(Unknown Source) at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.propertyChange(Unknown Source) at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) at java.awt.Component.firePropertyChange(Unknown Source) at java.awt.Component.setFocusTraversalKeys_NoIDCheck(Unknown Source) at java.awt.Container.setFocusTraversalKeys(Unknown Source) at javax.swing.JComponent.setUIProperty(Unknown Source) at javax.swing.LookAndFeel.installProperty(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.updateFocusTraversalKeys(Unknown Source) at javax.swing.plaf.basic.BasicTextAreaUI.propertyChange(Unknown Source) at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.propertyChange(Unknown Source) at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source) at java.awt.Component.firePropertyChange(Unknown Source) at javax.swing.text.JTextComponent.setEditable(Unknown Source) at aplicacao.PainelInfo.getDescricaoTA(PainelInfo.java:73) at aplicacao.PainelInfo.initialize(PainelInfo.java:62) at aplicacao.PainelInfo.<init>(PainelInfo.java:33) at aplicacao.BloonsTower.<init>(BloonsTower.java:75) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) at aplicacao.BloonsTower.<init>(BloonsTower.java:113) at aplicacao.InserirTorre.<init>(InserirTorre.java:6) (e assim por adiante...) Se alguém me souber indicar o que está a causar o problema e como resolver agradecia imenso. Obrigado. Link to comment Share on other sites More sharing options...
Knitter Posted December 26, 2009 at 06:55 PM Report Share #302479 Posted December 26, 2009 at 06:55 PM StackOverflow é um erro de consumo de memória, possivelmente um método que está a usar recursividade de algum modo. Pela repetição do erro parece-me que o problema estará no construtor da classe InserirTorre ou do BloonsTorre, podes colocar os construtores ou métodos que contenham as linhas 113 e 6 como está indicado nos erros? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Meados Posted December 26, 2009 at 06:58 PM Author Report Share #302480 Posted December 26, 2009 at 06:58 PM Boas já editei o meu tópico. Obrigado. Link to comment Share on other sites More sharing options...
Knitter Posted December 26, 2009 at 07:09 PM Report Share #302482 Posted December 26, 2009 at 07:09 PM Aquilo que estás a mostrar não é muito útil, está a dar erro num construtor que não está aqui colocado, além disso não estão identificadas as linhas. Faz um debug do código e verifica qual o método que está a ser chamado de forma recursiva, identificas logo o teu problema. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Meados Posted December 26, 2009 at 07:22 PM Author Report Share #302483 Posted December 26, 2009 at 07:22 PM Aquilo que estás a mostrar não é muito útil, está a dar erro num construtor que não está aqui colocado, além disso não estão identificadas as linhas. Mas ao não colocar construtor o java não cria um por defeito? As linhas 6 e 113 já identifiquei é necessário coloca-las todas? Faz um debug do código e verifica qual o método que está a ser chamado de forma recursiva, identificas logo o teu problema. Ao fazer debug ele não sai do "protected Modo INSERIR_TORRE = new InserirTorre();". Link to comment Share on other sites More sharing options...
Knitter Posted December 26, 2009 at 07:33 PM Report Share #302486 Posted December 26, 2009 at 07:33 PM Mas ao não colocar construtor o java não cria um por defeito? Se quiseremos ser mesmo correctos, não, não cria um. Ao fazer debug ele não sai do "protected Modo INSERIR_TORRE = new InserirTorre();". Se não sai, é porque está a criar, recursivamente, o objecto, está a entrar no construtor e a executar algum código de iniciação que usa toda a memória da pilha. Se, com o debugger, acederes ao construtor o que é que tens? Verifica o construtor das superclasses também porque podem estar a ser invocados. Só o código que tens aqui não diz nada e é complicado estar a tentar adivinhar o que se passa com o resto do código, tens de verificar porque razão o construtor está a ser chamado recursivamente, parece que estás a chamar um construtor dentro de outro sucessivamente. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now