No enclosing instance of type Message is accessible.



  • public class Message
    {
    	.
    	.
    	.
    
    	public class MessageFormatException extends RuntimeException
    	{
    		private static final long serialVersionUID = -7543167068048092897L;
    	}
    
    	public static Message parse(String line)
    	{
    		.
    		.
    		.
    
    		if(...)
    			throw new MessageFormatException(); // No enclosing instance of type Message is accessible. Must qualify the allocation with an enclosing instance of type Message (e.g. x.new A() where x is an instance of Message).
    
    		.
    		.
    		.
    	}
    }
    

    Was mache ich falsch? 😮



  • Steht doch in der Fehlermeldung...

    (und wozu soll die serialVersionUID gut sein? ...



  • In der Fehlermeldung steht nur die Lösung, aber nicht, was daran falsch ist und warum. Die serialVersionUID hab ich mir von der Eclipse generieren lassen, damit sie mich nicht mit ner Warnung belästigt.



  • Du kannst MessageFormatException nicht instanziieren, weil: No enclosing instance of type Message is accessible

    314159265358979 schrieb:

    Die serialVersionUID hab ich mir von der Eclipse generieren lassen, damit sie mich nicht mit ner Warnung belästigt.

    "lulz", alternative wär Java lernen, das würde auch gegen Problem #1 helfen 👍



  • Antwort schreiben schrieb:

    Du kannst MessageFormatException nicht instanziieren, weil: No enclosing instance of type Message is accessible

    Das kann man auch zielführender Beschreiben. Nested Class sind Teil der Classe in dem sie liegen. Dein Aufruf deiner Method hat ein statischen Kontext, daher gibst keine Instanzierungen von Message, welches MessageFormatException auch Mitglied ist. Lösung schreib ein static vor deine Klasse.



  • Das klingt nach nem "Feature". Naja, danke.



  • 314159265358979 schrieb:

    Das klingt nach nem "Feature". Naja, danke.

    Der Sinn ist, dass (nicht-statische) innere Klassen auf Member der äußeren Klasse zugreifen könn(t)en. Das geht natürlich nur, wenn du auch eine Instanz hast. Und das ist im statischen Fall nicht so.


Anmelden zum Antworten