1***********************************************
如果在程式運作中要加載新的類,就要新的類加載器
Classloader 回憶錄。。。。
//jvm.dll
//jvm 初始化
//bootstrap loader class.path ! C寫的! JRE 目錄 classes/onlyfun/caterpillar
//extclassloader lib/ext/classes 目錄 /onliyfun/catepillar
//appclassloader
//xxx.class
URL u = new URL("file:/d:/");
ClassLoader mycl = new URLClassLoader(new URL[]{u});
Class aaa = mycl.loadClass("User");
如果加載某個東西,預設的是從父類(Bootstraploade )一直 到子類( Appclassloader)搜尋
其實就是從系統設定的 一些path開始找,然後找使用者自定的path
相當于 class.forname();
2**************************************************
Field f1 = aaa.getDeclaredField("name");
//f1.setAccessible(true);
//牛啊……居然可以無視private屬性,直接給屬性指派
Object x = aaa.newInstance();
f1.setInt(x, 111);//如果沒有f1.setAccessible(true); 則會報錯,如果name是一個private修飾的話
3****************************************************
Class c3 = Integer.class;
//class類型 ,數組長度
Object c3n = Array.newInstance(c3, 5);
for(int n = 0 ; n < 5 ; n++)
{
//對象,Index,對應的值
Array.set(c3n, n, n*n);
}
for(int n = 0 ; n < 5 ; n++)
{
//對象 , index
System.out.println(Array.get(c3n, n));
}
原來反射形式的數組,用Array對象解決。它也有newInstance方法。不過是針對數組的