类装载器 ClassLoader:
预先装载(常驻内存);
按需装载(使用时载入,使用完毕由垃圾收集器负责释放):
隐式载入;
显式载入
#Main.java
public class Main{
public static void main(String[] args){
A a=new A();
a.print();
B b=new B();
b.print();
}
}
#A.java
public class A{
public void print(){
System.out.println("Using Class A");
}
}
#B.java
public class B{
public void print(){
System.out.println("Using Class B");
}
}
public class Office{
public static void main(String[] arg) throws Exception{
Class c=Class.forName(arg[0]);
Object o=c.newInstance();
Assembly a=(Assembly)o;
a.start;
}
}
public class Word implements Assembly{
public void start(){
System.out.println("Word starts");
}
}
public class Excel implements Assembly{
public void start(){
System.out.println("Excel starts");
}
}
public interface Assembly{
public void start();
}
public class Office{
public static void main(String[] arg) throws Exception{
System.out.println("begin load");
//Office off=new Office();
//ClassLoader loader=off.getClass().getClassLoader();
ClassLoader loader=Office.class.getClassLoader();
Class c=loader.loadClass(arg[0]);
System.out.println("start initialize");
Object o=c.newInstance();
Assembly a=(Assembly)o;
a.start();
}
}
预先装载(常驻内存);
按需装载(使用时载入,使用完毕由垃圾收集器负责释放):
隐式载入;
显式载入
#Main.java
public class Main{
public static void main(String[] args){
A a=new A();
a.print();
B b=new B();
b.print();
}
}
#A.java
public class A{
public void print(){
System.out.println("Using Class A");
}
}
#B.java
public class B{
public void print(){
System.out.println("Using Class B");
}
}
public class Office{
public static void main(String[] arg) throws Exception{
Class c=Class.forName(arg[0]);
Object o=c.newInstance();
Assembly a=(Assembly)o;
a.start;
}
}
public class Word implements Assembly{
public void start(){
System.out.println("Word starts");
}
}
public class Excel implements Assembly{
public void start(){
System.out.println("Excel starts");
}
}
public interface Assembly{
public void start();
}
public class Office{
public static void main(String[] arg) throws Exception{
System.out.println("begin load");
//Office off=new Office();
//ClassLoader loader=off.getClass().getClassLoader();
ClassLoader loader=Office.class.getClassLoader();
Class c=loader.loadClass(arg[0]);
System.out.println("start initialize");
Object o=c.newInstance();
Assembly a=(Assembly)o;
a.start();
}
}