412 Stimmen

Ist keine umschließende Klasse Java

Ich versuche, ein Tetris-Spiel zu machen, und bekomme den Compiler-Fehler, wenn ich versuche, ein Objekt zu erstellen

Shape ist keine umschließende Klasse

public class Test {
    public static void main(String[] args) {
        Shape s = new Shapes.ZShape();
    }
}

Ich benutze innere Klassen für jede Form. Hier ist ein Teil meines Codes

public class Shapes {
    class AShape {
    }
    class ZShape {
    }
}

Was mache ich falsch?

1voto

Reishin Punkte 1725

Um die Anforderung aus der Frage zu erfüllen, können wir Klassen in das Interface einfügen:

public interface Shapes {
    class AShape{
    }
    class ZShape{
    }
}

und dann wie der Autor zuvor versucht hat zu verwenden:

public class Test {
    public static void main(String[] args) {
        Shape s = new Shapes.ZShape();
    }
}

Wenn wir nach der richtigen "logischen" Lösung suchen, sollte das fabric Designmuster verwendet werden

-1voto

mauronet Punkte 792

Falls jemand dieses Problem hat, während er versucht, eine Komponente eines Drittanbieters zu instanziieren.

In meinem Fall habe ich einen Unittest mit dieser Komponente durchgeführt: ChannelSftp.LsEntry

Bei der üblichen Instanziierung erhielt ich das Problem: Bildbeschreibung hier eingeben

Die Lösung war:

    ChannelSftp channelSftp =  new ChannelSftp();
    Constructor constructor = (Constructor) ChannelSftp.LsEntry.class.getDeclaredConstructors()[0];
    constructor.setAccessible(true);
    ChannelSftp.LsEntry lsEntry = constructor.newInstance(channelSftp, "file1.txt", null);

Den Originalcode habe ich hier gefunden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X