为什么java的文件名必须和公共类名相同

首先Java是被解释执行的。它在运行时并不是将所有的class文件全都放到内存中。而是在遇到import的时候才去相应的文件目录找相应的class文件。

对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机
在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。

一下是我写的一个比较“恶心”的程序来说明这个问题,大家在使用前先要将自己JDK的bin目录设置到环境变量path中去:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;


public class Test
{
    
public static void main(String[] args) {
        
        Object b 
= null;
        
        
try {
            b 
= Class.forName("Hello").newInstance();
        }
        
catch(InstantiationException e) {
            
        }
        
catch(IllegalAccessException e) {
            
        }
        
catch(ClassNotFoundException e) {
            
            
try {
                FileOutputStream file 
= new FileOutputStream("Hello.java");
                String s 
= "public class Hello {\r\n\t\r\n\tpublic Hello() {\r\n\t\tSyst"
                    
+ "em.out.println(\"Hello, world!\");\r\n\t}\r\n}\r\n";
                file.write(s.getBytes());
                
                Process p 
= Runtime.getRuntime().exec("javac Hello.java");
                System.out.println(
"The return value is: " + p.waitFor());
                
                b 
= Class.forName("Hello").newInstance();
            }
            
catch(FileNotFoundException ee) {
                
            }
            
catch(IOException ee) {
                
            }
            
catch(InterruptedException ee) {
                
            }
            
catch(InstantiationException ee) {
                
            }
            
catch(IllegalAccessException ee) {
                
            }
            
catch(ClassNotFoundException ee) {
                
            }
        }
    }
}

 

posted @ 2009-12-08 17:07  phpzxh  阅读(2042)  评论(0编辑  收藏  举报