对于一个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) {
}
}
}
}
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) {
}
}
}
}