Java的文件名必须和公共类名相同的原因

发表于:2010-8-31 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

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

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号