原因:我們開發完成項目以後,一般都是把class的文件拷貝你別人,不會把源代碼給其他人,同時我們也不能再文件中寫死路徑,因爲在其他電腦就沒有這些資源,從而就會導致我們開發的應用沒發使用。
使用類加載器則可以解決這個問題,我們在開發時,eclipse在保存時就會將我們的源代碼編譯爲class文件,不是*.java的文件則原封不動的保留到bin目錄當中去。所以我們可以使用類加載器來加載我們的資源文件。
實例如下:
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;
public class ReflectDemo3 {
publicstatic void main(String[] args) throws Exception {
//第一種方式是將資源文件存放到項目的根目錄下下
// InputStreamips = new FileInputStream("config.properties");
InputStreamips =ReflectDemo3.class.getClassLoader().getResourceAsStream("com/wj/reflect/config.properties");
// ReflectDemo3.class.getResourceAsStream("config.properties"); 這種方法不用寫包路徑,在其他包中只需要寫最後的一個報名後綴,例如
// ReflectDemo3.class.getResourceAsStream("aaa/config.properties");完成報名com.wj.aaa
Propertiespros = new Properties();
//讀取配置文件中的內容到流中,相當於一個map,以鍵值的方式存放
pros.load(ips);
StringclassName = pros.getProperty("className");
//使用反射的方式
Collectioncollection = (Collection) Class.forName(className).newInstance();
ReflectPointpt1 = new ReflectPoint(3, 3);
ReflectPointpt2 = new ReflectPoint(5, 5);
ReflectPointpt3 = new ReflectPoint(3, 3);
collection.add(pt1);
collection.add(pt2);
collection.add(pt3);
collection.add(pt1);
System.out.println(collection.size());
}
}