Je travaille sur un projet assez simple pour une classe. Je savais que c'était censé être écrit en Java et je lis suffisamment de la description de l'affectation pour avoir une idée de ce que j'étais censé faire, donc je me suis proposé de créer une solution agréable et orientée objet (parce que c'est Java, juste ?). Quand j'arrive enfin à lire les détails de la mission de Nitty-Gritty, je viens sur ce petit bijou: tout est censé être soumis sous la forme d'un fichier de classe unique. Il est trop tard pour réécrire le tout maintenant, j'ai donc essayé de travailler autour de cela en faisant toutes mes classes classes statiques de la classe primaire. À mon chagrin, j'ai découvert que Eclipse, au moins par défaut, compose les classes internes pour séparer les fichiers de classe. Malheureusement, je ne sais pas grand chose à propos des paramètres de compilateur Java, mais j'espère qu'il y a un moyen de les obtenir tous compilés à un fichier .Class. Est-ce possible, ou dois-je simplement transformer ce que j'ai avec une note et prendre ce que mon Ta décide de me faire docker? P>
4 Réponses :
J'ai bien peur qu'il n'y ait pas d'une telle option. Chaque classe est définie dans son propre fichier de classe. Même les classes anonymes sont définies dans Ce que je suggérerais, c'est de mettre un énorme commentaire / documentation sur pourquoi em> vous pensez qu'il n'est pas bon de tout mettre en une classe. Bien sûr, cela dépend de la personne "de l'autre extrémité". P>
Si un fichier em>, plutôt que une classe em> est requis, faites simplement un fichier JAR. P> parentclass $ 1.class code> p>
Eh bien, je pense qu'il doit avoir pensé qu'il serait instructif d'essayer de résoudre le problème de manière procédurale, mais pourquoi le faire à Java, alors? Quoi qu'il en soit, merci pour la réponse rapide.
Java peut également être utilisé de manière procédurale. Surtout s'il s'agit d'un algorithme purement.
Cela dit, devrait-il s'agir d'un fichier em> em> ou d'un fichier em>. Si l'ancien que vous pouvez bien sûr, ZIP / JAR, si celui-ci un peu de discussion avec le TA serait la voie à suivre. P>
Si vous vous sentez courageux, vous pouvez créer un pot pour votre application, encodez-le sous forme de chaîne dans une chaîne de votre toplevelclass qui étend un chargeur de classe et utilisez ce chargeur de classe pour charger les classes à partir du fichier JAR décodé. p>
C'est si fou et montre tant de connaissances de la plate-forme Java qu'il doit valoir des crédits supplémentaires. P>
Le moyen plus facile est de simplement ajouter votre fichier JAR au fichier de classe. La classe principale devrait ensuite étendre Classloader pour lire les données JAR à partir de son propre fichier. C'est ainsi que vous pourriez écrire des programmes d'installation d'un fichier unique (ou d'une annulation) avant JAR.
En tant que TA, si un étudiant m'envoie un seul fichier Java, avec une conception orientée objet et des classes imbriquées, je l'aimerais! P>
Si le TA a voulu la solution la plus simple au problème et que vous avez trop conçu, c'est bien sûr une autre histoire. p>
Notez que si le TA n'aime pas les classes imbriquées et pensez qu'ils sont mauvais, dirigez-le aux postes de journaux et de Gilad Bracha. Il a été impliqué dans la spécification de langue Java, il est une autorité sur le terrain et a proposé une langue entièrement basée sur la nidification de classe! p>
J'ai vu quelques systèmes de soumission d'affectation qui permettent uniquement à un seul fichier à être téléchargé (accompagné d'une description de texte) - cela pourrait être la raison de la limitation de fichier One-.Class. Si tel est effectivement le cas, vous feriez probablement bien le téléchargement d'un seul fichier .jar avec une note d'accompagnement.
Comme Bozho a dit, vous ne pouvez pas compiler plusieurs classes dans un fichier de classe. Je demanderais à l'AT de la clémence comme l'a déjà été suggéré, tout en essayant de le refroidir afin qu'il soit compilé dans un seul fichier de classe comme sauvegarde. Pourrait être capable de le faire à temps, qui sait.
Pour les missions que j'ai dû faire, j'ai toujours dû soumettre le code source.