疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

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 { public Hello() { Syst"

  + "em.out.println("Hello, world!"); } } ";

  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) {

  }

  }

  }

  }