定义一个类,必须会生成一个class文件吗?
那要是我定义了1000个class,就生成1000个class文件?这么很麻烦吗?
我是否可以在我的一个java文件里,不管定义几个class,就只有一个class文件呢?
如下我定义了一个public类,我还想再定义一个类,但是不像额外生成一个.class文件,可以吗?谢谢
public class test
{
public static void main(String[] args) throws Exception
那要是我定义了1000个class,就生成1000个class文件?这么很麻烦吗?
我是否可以在我的一个java文件里,不管定义几个class,就只有一个class文件呢?
如下我定义了一个public类,我还想再定义一个类,但是不像额外生成一个.class文件,可以吗?谢谢
public class test
{
public static void main(String[] args) throws Exception
分离有分离的好处,可以增强耦合性,如果全放在一个class又很大你不是看了头都大了,更别说修改了。
class Outer{
class Inner;
}
你再去你的bin目录里找,会发现,有Outer.class和Outer$Inner.class
2、不希望有class文件产生,你也可以使用cglib之类的动态产生class,不过这种一般都是用于动态代理,一般不会有人把程序逻辑放到这种里面去,自己给自己挖坑
3、当然你也可以自己去定义一个文件格式,然后动态调用编译,然后自己写类加载器,动态加载运行
4、你还可以自己改写一下jdk,不知道oracle招不招人……
public class Person{ class Student{ }
}
我知道,用反编译工具结果是这样,不过这样应该也算是一个.class文件吧
我知道,用反编译工具结果是这样,不过这样应该也算是一个.class文件吧
不算。你电脑里编译出2个class文件,还需要别的解释?
你要知道原理,你自己就可以打包,打成zip格式的压缩包,把后缀改成jar就行了,注意下路径结构。
java是属于编译性语言没错,不过你说高级语言会误导别人,因为PHP和ASP也是高级语言...。
不过在这个字节码文件(class文件)也可以使用运行时的技术动态生成在内存中。很多动态代理框架就是这样实现的。
任何的字节码文件(class文件还是内存中的字节码文件)都需要被类加载器加载才能运行。
你不用纠结生成的class文件的多少,因为可以使用*ar(jar等)进行压缩,而你只需管理一个压缩文件。