定义一个类,必须会生成一个class文件吗?
那要是我定义了1000个class,就生成1000个class文件?这么很麻烦吗?
我是否可以在我的一个java文件里,不管定义几个class,就只有一个class文件呢?
如下我定义了一个public类,我还想再定义一个类,但是不像额外生成一个.class文件,可以吗?谢谢
public class test
{
public static void main(String[] args) throws Exception

解决方案 »

  1.   

    对的,Java是解释性语言,实战跨平台,底层JVM只认识class文件,每个Java类,编译后都会产生一个class文件。所以Java基本都是做中大型项目的。
      

  2.   


    分离有分离的好处,可以增强耦合性,如果全放在一个class又很大你不是看了头都大了,更别说修改了。
      

  3.   

    JAVA属于编译性高级语言,解释性语言是PHP,ASP这种
      

  4.   

    是不可以的,比如这样定义
    class Outer{
          class Inner;
    }
    你再去你的bin目录里找,会发现,有Outer.class和Outer$Inner.class
      

  5.   

    真正要运行的就是class文件, 将其进行加载才能在虚拟机运行, 而且就算你在一个java文件里定义了很多个类, 编译之后你看看编译之后产生的文件就知道了
      

  6.   

    1、不喜欢那么多class文件,你可以打包成jar文件进行发行
    2、不希望有class文件产生,你也可以使用cglib之类的动态产生class,不过这种一般都是用于动态代理,一般不会有人把程序逻辑放到这种里面去,自己给自己挖坑
    3、当然你也可以自己去定义一个文件格式,然后动态调用编译,然后自己写类加载器,动态加载运行
    4、你还可以自己改写一下jdk,不知道oracle招不招人……
      

  7.   

    可以使用内部类,这样他编译的时候就会在一个.class文件中
    public class  Person{      class  Student{    }
    }
      

  8.   

    并不会, 结果见4楼
    我知道,用反编译工具结果是这样,不过这样应该也算是一个.class文件吧
      

  9.   

    并不会, 结果见4楼
    我知道,用反编译工具结果是这样,不过这样应该也算是一个.class文件吧
    不算。你电脑里编译出2个class文件,还需要别的解释?
      

  10.   

    Quote: 引用 6 楼 rumlee 的回复:

    1、不喜欢那么多class文件,你可以打包成jar文件进行发行
    quote]
    谢谢,请教下如何打包?然后import ?
      

  11.   

    很多IDE工具,eclipse、idea都可以打包,打包的方式也很多,也可以配合用ant、maven这些工具打包
    你要知道原理,你自己就可以打包,打成zip格式的压缩包,把后缀改成jar就行了,注意下路径结构。
      

  12.   

    JAVA属于编译性高级语言,解释性语言是PHP,ASP这种
    java是属于编译性语言没错,不过你说高级语言会误导别人,因为PHP和ASP也是高级语言...。
      

  13.   

    一个java类一般是会生成一个class文件,这个class文件就是字节码,这是Java平台中立和语言中立的基础。
    不过在这个字节码文件(class文件)也可以使用运行时的技术动态生成在内存中。很多动态代理框架就是这样实现的。
    任何的字节码文件(class文件还是内存中的字节码文件)都需要被类加载器加载才能运行。
    你不用纠结生成的class文件的多少,因为可以使用*ar(jar等)进行压缩,而你只需管理一个压缩文件。
      

  14.   

    会得,匿名内部类也会生成class
      

  15.   

    对的,Java是解释性语言,实战跨平台,底层JVM只认识class文件,每个Java类,编译后都会产生一个class文件。所以Java基本都是做中大型项目的。
      

  16.   

    这我去,你自己都说它编译以后会产生一个class文件,还说他是解释性语言......