黑马程序员:ClassLoader 与 URLClassLoader 的用法!

时间:2024-10-20 08:11:00

---------------------- android培训java培训、期待与您交流! ----------------------

 

  1. 读取配置文件中的信息

配置文件的内容:

用URLClassLoader读配置文件内容:

import ;
import ;
import ;
import ;

public class Testext {
	public static void main(String[] args) throws IOException {
		Properties properties = new Properties();
		URL[] urls = new URL[] { new URL("file:/"
				+ ("") + "/ravageWeb/") };
		URLClassLoader ucl = new URLClassLoader(urls);
		//ClassLoader cl = (); 	//这两行也可以不写
		//cl = ucl; 	//如果写,下面就要改为:...
		(("resources/"));
		(("sui"));
	}
}

遇到的问题:1. "/ravageWeb/" 中第二个 / 可写可不写。 但是若改为 "/ravageWeb/resources/" 则resources后必须加 /  否则报NullPointerException

              用ClassLoader读配置文件内容:

import ;
import ;

public class Testext {
	public static void main(String[] args) throws IOException {
		Properties properties = new Properties();
		(()
				.getResourceAsStream("resources/"));
		(("sui"));
	}
}

 

总结:很显然ClassLoader与URLClassLoader的区别是:

ClassLoader只能读位于classpath下的文件(即:resources/必须放到src目录下,编译后进入bin目录);

而URLClassLoader可以读任意目录下的文件!

       2. 载入一个类

用ClassLoader载入一个类:

import ;

public class Testext {
	public static void main(String[] args) throws IOException,
			ClassNotFoundException {
		Class c = ().loadClass("");
		(());	//输出:
	}
}


 

用URLClassLoader载入一个类:

import ;
import ;
import ;

public class Testext {
	public static void main(String[] args) throws IOException,
			ClassNotFoundException {
		
		URL[] urls = new URL[] { new URL("file:/"
				+ ("") + "/ravageWeb/") };
		URLClassLoader ucl = new URLClassLoader(urls);
		Class c = ("NoPackage");
		(());
	}
}


遇到的问题:"/ravageWeb/" 中第二个 /  必须写,否则报ClassNotFoundException

 

总结:

ClassLoader只能load位于classpath(src目录)下的类;

而URLClassLoader可以load任意目录下的类!

 

 

 

---------------------- android培训java培训、期待与您交流! ----------------------

 

详细请查看:/heima