Ho lavorato a un progetto abbastanza semplice per una lezione. Sapevo che doveva essere scritto in Java, e ho letto abbastanza della descrizione di assegnazione per avere un'idea di ciò che avrei dovuto fare, così ho deciso di creare una soluzione piacevole, orientata agli oggetti (perché è Java, giusto ?). Quando finalmente riesco a leggere i dettagli nitidi del compito, mi imbatto in questo piccolo gioiello: l'intera faccenda dovrebbe essere presentata come un file di una sola classe. È troppo tardi per riscrivere il tutto ora, quindi ho cercato di aggirarlo rendendo tutte le mie classi classi interne statiche della classe primaria. Con mio grande dispiacere, ho scoperto che eclipse, almeno per impostazione predefinita, compila le classi interne per separare ancora i file di classe. Sfortunatamente non conosco molto le impostazioni del compilatore Java, ma spero che ci sia un modo per farle compilare tutte in un file .class. È possibile o devo semplicemente consegnare ciò che ho preso con un appunto e prendere qualsiasi cosa il mio TA decida di attraccare a me?Posso compilare una classe insieme a tutte le sue classi interne in un singolo file di classe?
risposta
Temo che non ci sia questa opzione. Ogni classe è definita nel proprio file di classe. Anche le classi anonime sono definiti in ParentClass$1.class
Quello che vorrei suggerire è quello di mettere un enorme commento/documentazione sul perché si pensa che non è bene mettere tutto in una classe. Ovviamente dipende dalla persona "dall'altra parte".
Se è richiesto un file , piuttosto che una classe, è sufficiente creare un file jar.
beh lui che per qualche motivo deve aver pensato che sarebbe stato istruttivo cercare di risolvere il problema procedurale, ma perché farlo in Java, allora? Comunque, grazie per la rapida risposta. –
bene, Java può anche essere utilizzato in modo procedurale. Soprattutto se si tratta di un algoritmo puramente. – Bozho
Detto questo, questo dovrebbe essere un singolo file , o un solo file didi classe. Se il primo è possibile ZIP/JAR, se quest'ultimo un po 'di chat con l'AT sarebbe la strada da percorrere.
Se vi sentite coraggiosi si potrebbe creare un barattolo per la vostra applicazione, codificare come una stringa in un vostro toplevelclass che si estende un programma di caricamento classe e utilizzare questo programma di caricamento classe per caricare le classi dal file jar decodificato.
Questo è così folle e mostra tanta conoscenza della piattaforma Java che deve valere crediti extra.
Sì, è pazzesco! :) – Jeff
Il modo più semplice è in realtà solo aggiungere il file jar al file di classe. La classe principale dovrebbe quindi estendere ClassLoader per leggere i dati jar dal proprio file. È così che potresti scrivere programmi di installazione di file singoli (o semplicemente eseguibili) prima di jar. – relet
Come TA, se uno studente mi invia un singolo file java, con un design orientato agli oggetti e classi nidificate, mi piacerebbe moltissimo!
Se la TA desiderava la soluzione più semplice al problema e la sovrascriveva, è ovviamente un'altra storia.
Nota che se all'AT non piacciono le classi annidate e pensano di essere cattive, indirizzalo ai post di NewSpeak e di Gilad Bracha. È stato coinvolto nella specifica del linguaggio Java, è un'autorità nel campo e ha creato un linguaggio interamente basato sulla nidificazione di classi!
- 1. Ottenere tutte le classi interne per riflessione
- 2. jquery rimuove tutte le classi dalla classe
- 3. Ottenere tutte le classi ereditarie di una generica classe astratta
- 4. Come elencare tutte le classi sul percorso classe che implementa un determinato insieme di interfacce
- 5. Come controllare tutte le classi sotto o usando una classe?
- 6. Classe generica a CSV (tutte le proprietà)
- 7. errore quando si definiscono le classi interne in una classe di test JUnit in
- 8. Come restituire un oggetto da una classe che utilizza NSURLConnection e le sue classi delegate?
- 9. Ottenere tutte le istanze di una classe
- 10. Perché ant compilare tutte le classi ciascuna?
- 11. Come posso estrarre tutte le classi in un file separato?
- 12. Come enumerare tutte le classi con attributo di classe personalizzato?
- 13. Pool di memoria C++ per una classe e le sue classi derivate
- 14. Dove mettere le classi interne?
- 15. Le classi interne sono leggere?
- 16. Ottenere tutte le costanti all'interno di una classe in python
- 17. Come posso avere una variabile costante comune a tutte le classi in un pacchetto?
- 18. le prove eseguite con le classi interne attraverso Maven
- 19. Comprendere classi generiche interne
- 20. Scala: più oggetti e classi in un singolo file o ogni oggetto/classe il proprio file
- 21. campi statici in classi interne
- 22. È possibile ottenere tutte le sottoclassi di una classe?
- 23. Classi interne: come posso ottenere l'oggetto di classe esterna al momento della costruzione?
- 24. Quali sono le classi interne finali?
- 25. Vedere tutte le classi super-in Java
- 26. Uso delle classi interne in C#
- 27. Le classi interne in enumerazione sono sempre statiche in Java?
- 28. Posso compilare una lista della mia classe direttamente in LINQ?
- 29. Le mie classi API interne dovrebbero essere tutte in un unico pacchetto?
- 30. Costruttori in classi interne (implementazione di interfacce)
Ho visto un paio di sistemi di assegnazione di presentazione che consentono solo un singolo file da caricare (accompagnato da una descrizione del testo) - questo potrebbe essere il motivo per la limitazione di un .class-file. Se questo è davvero il caso, probabilmente staresti caricando un singolo file .jar con una nota di accompagnamento. –
Come ha detto Bozho, non è possibile compilare più classi in un unico file di classe. Vorrei chiedere all'AT un po 'di clemenza, come già suggerito, ma allo stesso tempo provo a rifattenerlo in modo che compili in un singolo file di classe come backup. Potrebbe essere in grado di farlo in tempo, chissà. – Jeff
Per gli incarichi che dovevo fare, dovevo sempre inviare il codice sorgente. –