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?
Ich fürchte, es gibt keine solche Option. Jede Klasse ist in einer eigenen Klassendatei definiert. Auch anonyme Klassen sind in ParentClass.class
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.
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.
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!
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.
Tags und Links java compiler-construction