Java 我可以将一个类及其所有内部类编译为一个类文件吗?

Java 我可以将一个类及其所有内部类编译为一个类文件吗?,java,compiler-construction,Java,Compiler Construction,我一直在为一个班级做一个相当简单的项目。我知道它应该是用Java编写的,我读了足够多的作业描述,知道我应该做什么,所以我开始创建一个不错的面向对象的解决方案(“因为它是Java,对吧?”)。当我终于开始阅读作业的细节时,我发现了一个小问题:整个作业应该作为一个类文件提交。现在重写整件事已经太晚了,所以我试图通过使我所有的类都是主类的静态内部类来解决这个问题。令我懊恼的是,我发现eclipse(至少在默认情况下)仍然将内部类编译为单独的类文件。不幸的是,我不太了解Java编译器设置,但我希望有一种

我一直在为一个班级做一个相当简单的项目。我知道它应该是用Java编写的,我读了足够多的作业描述,知道我应该做什么,所以我开始创建一个不错的面向对象的解决方案(“因为它是Java,对吧?”)。当我终于开始阅读作业的细节时,我发现了一个小问题:整个作业应该作为一个类文件提交。现在重写整件事已经太晚了,所以我试图通过使我所有的类都是主类的静态内部类来解决这个问题。令我懊恼的是,我发现eclipse(至少在默认情况下)仍然将内部类编译为单独的类文件。不幸的是,我不太了解Java编译器设置,但我希望有一种方法可以将它们全部编译到一个.class文件中。这是可能的,还是我必须简单地交上我的笔记,然后拿走我的助教决定要我做的任何事情?

恐怕没有这样的选择。每个类都在自己的类文件中定义。甚至匿名类也在父类$1.class中定义

我的建议是,对为什么你认为把所有的东西都放在一个类中是不好的,发表大量的评论/文档。当然,这取决于“另一端”的人


如果需要一个文件而不是一个类,只需创建一个jar文件。

也就是说,这应该是单个文件还是单个类文件。如果是前者,你当然可以压缩/压缩它,如果是后者,与TA聊一聊就是最好的选择。

如果你有勇气,你可以为你的应用程序创建一个JAR,将它编码为toplevelclass中的一个字符串,它扩展了一个类加载器,并使用这个类加载器从解码的JAR文件中加载类


这太疯狂了,展示了对Java平台的如此多的知识,这需要额外的学分。

作为助教,如果一个学生给我一个Java文件,带有面向对象的设计和嵌套类,我会喜欢它的

如果助教想要问题的最简单解决方案,而你设计过度,那当然是另一回事了


请注意,如果TA不喜欢嵌套类,并且认为它们不好,请指向NewSpeak和Gilad Bracha的帖子。他参与了Java语言规范,他是该领域的权威,提出了一种完全基于类嵌套的语言

我见过一些作业提交系统只允许上传一个文件(附带一个文本描述)——这可能是一个.class文件限制的原因。如果确实是这样的话,您可能可以上传一个.jar文件并附带一个注释。正如Bozho所说,您不能将多个类编译成一个类文件。我会像已经建议的那样请求TA宽大处理,但同时尝试重构它,以便将其编译成单个类文件作为备份。也许能及时完成,谁知道呢。对于我必须完成的作业,我总是要提交源代码。我想他一定是出于某种原因认为尝试以程序的方式解决问题会很有启发性,但为什么要用Java呢?无论如何,谢谢你的快速回答。好吧,Java也可以以过程的方式使用。特别是如果它是一个纯算法,更简单的方法实际上是将jar文件附加到类文件中。然后,主类应该扩展ClassLoader以从自己的文件中读取jar数据。这就是在jar之前编写单文件安装(或可运行)程序的方法。