是否可以在同一源代码包中包含.class和.java类?

是否可以在同一源代码包中包含.class和.java类?,java,testing,junit,Java,Testing,Junit,在抛出一些开源程序源代码时,我意识到一些项目的源代码文件中包含.class和.java!我知道.class是一个已经编译过的.java文件,而.class是二进制文件,但是在一个项目中有可能编译和解压缩文件吗?如果是,为什么要这样做?有什么好处 长话短说:我试图研究不同项目中的测试类,在那里我意识到一些程序在(build)文件夹下有测试文件,在那里它们有.class作为扩展名!这些类的行为是否与扩展名为.java的测试包下的测试类不同? 是否有反编译它们的方法 感谢类文件和Java文件共享由包结

在抛出一些开源程序源代码时,我意识到一些项目的源代码文件中包含.class和.java!我知道.class是一个已经编译过的.java文件,而.class是二进制文件,但是在一个项目中有可能编译和解压缩文件吗?如果是,为什么要这样做?有什么好处

长话短说:我试图研究不同项目中的测试类,在那里我意识到一些程序在(build)文件夹下有测试文件,在那里它们有.class作为扩展名!这些类的行为是否与扩展名为
.java
的测试包下的测试类不同? 是否有反编译它们的方法


感谢

类文件和Java文件共享由包结构定义的相同子目录结构

像eclipse这样的IDE允许您将类文件放入与相应源文件相同的文件夹中,或者放入另一个(复制的)文件夹结构中


我认为,您选择这些选项中的哪一个取决于您的品味。

类文件和Java文件共享由包结构定义的相同子目录结构

像eclipse这样的IDE允许您将类文件放入与相应源文件相同的文件夹中,或者放入另一个(复制的)文件夹结构中


我想说,您选择这些选项中的哪一个是一个品味问题。

事实上,如果您运行java编译器(
javac
),而不指定“-d”选项来指示放置生成类的特定目录,那么默认情况下,它会将它们放置在与源文件相同的目录中,这是可能的

这样做没有冲突,因为
javac
编译器和jvm启动器(
java
)没有查看相同的文件扩展名


但是,通常认为将生成的类文件放在项目下的单独文件夹中是一种最佳做法:类、bin等。事实上,如果运行java编译器(
javac
),而不指定“-d”选项来指示将生成的类放在何处的特定目录,则是可能的,默认情况下,它会将它们放置在与源文件相同的目录中

这样做没有冲突,因为
javac
编译器和jvm启动器(
java
)没有查看相同的文件扩展名


但是,通常认为最佳做法是将生成的类文件放在项目下的一个单独文件夹中:类、bin等。

如果您可以访问原始源代码,您可以查看代码的工作方式以及注释。如果您可以访问原始源代码,您可以查看代码的工作方式,但为什么还要在源代码文件之间添加这些文件呢?为什么不直接使用.java文件呢?或者将整个项目文件编译为.class?@user5923402:如果“project”是指签入GIT或subversion等版本控制系统的文件,我同意,添加类文件是没有意义的。但这与目录结构无关。实际上,这是一个完整的源代码,我已经下载为(.rar),我确实解压缩了它,并开始在子文件夹之间浏览!有没有反编译它们的方法?但为什么还要在源代码文件之间包含这些文件呢?为什么不直接使用.java文件呢?或者将整个项目文件编译为.class?@user5923402:如果“project”是指签入GIT或subversion等版本控制系统的文件,我同意,添加类文件是没有意义的。但这与目录结构无关。实际上,这是一个完整的源代码,我已经下载为(.rar),我确实解压缩了它,并开始在子文件夹之间浏览!有没有办法反编译它们?