Kann ich eine Klasse zusammen mit all ihren inneren Klassen in einer einzigen Klassendatei kompilieren?

8

Ich habe an einem ziemlich einfachen Projekt für einen Kurs gearbeitet. Ich wusste, dass es in Java geschrieben sein sollte, und ich las genug von der Aufgabenbeschreibung, um eine Vorstellung davon zu bekommen, was ich tun sollte. Also machte ich es mir zur Aufgabe, eine schöne, objektorientierte Lösung zu entwickeln (weil es Java ist) ?). Als ich endlich die Details des Auftrages lese, stoße ich auf dieses kleine Juwel: Das Ganze soll als eine einzige Klassendatei eingereicht werden. Es ist zu spät, um das Ganze jetzt neu zu schreiben, also habe ich versucht, es zu umgehen, indem ich alle meine Klassen zu statischen inneren Klassen der primären Klasse gemacht habe. Zu meinem Leidwesen entdeckte ich, dass Eclipse, zumindest standardmäßig, die inneren Klassen kompiliert, um Klassendateien immer noch zu trennen. Ich weiß leider nicht viel über Java-Compiler-Einstellungen, aber ich hoffe, es gibt eine Möglichkeit, sie alle in eine .class-Datei kompiliert zu bekommen. Ist es möglich, oder muss ich einfach das, was ich habe, mit einer Notiz einreichen und alles nehmen, was mein TA entscheidet, mich dafür anzulegen?

    
Gabriel Burns 04.07.2010, 21:17
quelle

4 Antworten

6

Ich fürchte, es gibt keine solche Option. Jede Klasse ist in einer eigenen Klassendatei definiert. Auch anonyme Klassen sind in ParentClass.class

definiert

Was ich vorschlagen würde, ist einen großen Kommentar / Dokumentation zu warum Sie denken, dass es nicht gut ist, alles in eine Klasse zu stellen. Natürlich kommt es auf die Person "am anderen Ende" an.

Wenn eine Datei statt eine Klasse benötigt wird, erstellen Sie einfach eine JAR-Datei.

    
Bozho 04.07.2010 21:23
quelle
3

Wenn Sie sich mutig fühlen, können Sie ein jar für Ihre Anwendung erstellen, es als String in eine eigene Toplevel-Klasse codieren, die einen Classloader erweitert und diesen Classloader zum Laden der Klassen aus der dekodierten jar-Datei verwendet.

Das ist so verrückt und zeigt so viel Wissen über die Java-Plattform, dass es zusätzliche Credits wert sein muss.

    
Peter Tillemans 04.07.2010 21:30
quelle
1

Wenn ein Student mir als TA eine einzige Java-Datei mit einem objektorientierten Design und verschachtelten Klassen schickt, würde ich es lieben!

Wenn der TA die einfachste Lösung für das Problem wollte und Sie es überdimensioniert haben, dann ist das natürlich eine andere Geschichte.

Beachte, dass, wenn der TA verschachtelte Klassen nicht mag und sie für schlecht halten, ihn auf die Beiträge von NewSpeak und Gilad Bracha verweisen soll. Er war an der Java Language Specification beteiligt, er ist eine Autorität in diesem Bereich und hat eine Sprache entwickelt, die vollständig auf Klassenverschachtelung basiert!

    
ewernli 05.07.2010 07:59
quelle
0

Das heißt, sollte dies eine einzelne Datei oder eine einzelne Klasse Datei sein. Wenn man das erstere kann man natürlich ZIP / JAR, wenn letzteres eine kleine Unterhaltung mit dem TA wäre der Weg zu gehen.

    
user268396 04.07.2010 21:25
quelle

Tags und Links