立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

java文件名必须和公共类名相同的原因 [复制链接] qrcode

查看: 2731 | 回复: 0

头像被屏蔽
齐米米
发表于: 2012-11-22 15:51:04 | 显示全部楼层

首先Java是被解释执行的。它在运行时并不是将所有的class文件全都放到内存中。而是在遇到import的时候才去相应的文件目录找相应的class文件。
  对于一个public类,它是可以被项目中任何一个类所引用的,只需在使用它前import一下它所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机
  在相应的路径(包名)中找到相应的类的信息。如果不这么做的话,就很难去找,而且开销也会很大。
  一下是我写的一个比较恶心的程序来说明这个问题,大家在使用前先要将自己JDKbin目录设置到环境变量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) {
  }
  }
  }
  }

信息咨询:Q707552864  谢老师
跳转到指定楼层
快速回复 返回顶部 返回列表