-
靜態加載類是在編譯時進行,動態加載類是在運行時進行;靜態加載在編譯時有錯誤會報錯,動態加載在編譯時有錯誤不會報錯,在運行時才會報錯。new HelloWorld()是靜態加載類,Class.forName(包名.HelloWorld)是動態加載類。查看全部
-
//HelloWorld類也是對象,是java.lang.Class類的對象 //每一個類都有一個隱含的靜態成員變量class Class c1 = HelloWorld.class //已知道該類的對象,通過getClass()方法獲得類類型 HelloWorld hello = new HelloWorld(); Class c2 = hello.getClass(); //通過Class類的forName()方法 Class c3 = Class.forName("包名.HelloWorld"); 結果:c1==c2==c3 (c1,c2,c3稱為類類型) //通過類類型的newInstance()方法,可以獲得類的對象 HelloWorld hello2 = (HelloWorld)c1.newInstance();查看全部
-
知識點總結查看全部
-
如果驗證 繞過編譯就無效了 可以通過方法的反射來操作 繞過編譯 可以list1中加入整數了 打印size 為2 說明 string的集合 放入了整數 但是不能for 循環打印 因為會報類的轉換異常查看全部
-
反射的操作都是編譯之后的操作 ArrayList list=new ArrayList() ArrayList<String> list1=new ArrayList<String>() Class c1=list.getClass() Class c2=list1.getClass() 打印c1=c2 為true 說明編譯之后集合的泛型是 去泛型化的 java中的集合的泛型 是防止錯誤輸入的 只在編譯階段有效 繞過編譯就無效了查看全部
-
方法反射時 返回值 用Object 獲取查看全部
-
獲取類中指定的某一個方法例子getMethod(方法名,參數,canshu,,,,,,) 如果沒有參數直接getMethod(方法名) 需要拋異常 然后 m.invoke(a1,10,20)如果沒有參數 可以直接 m.invoke(a1)查看全部
-
方法的反射查看全部
-
獲取類的構造函數和 構造函數里的參數類型 也有兩種方法 Contructor[] cs=class.getContructors() class.getDeclaredContructors() Class[] paramTypes=Contructor.getParameterTypes();查看全部
-
成員變量的獲取查看全部
-
獲取類的成員變量信息的兩種方法 getFields()和getDeclaredFields() getFields() 獲取的是所有的public 的成員變量信息 getDeclaredFields() 獲取的是該類自己聲明的成員變量信息 不管公有或私有查看全部
-
獲取類的方法 以及 方法的 返回值類型和參數類型查看全部
-
獲取類中method的兩種方式 class.getMethods()和getDeclaredMehthods()以及區別 getDeclaredMehthods是獲取所有的自己類中的方法 不管public private 等查看全部
-
靜態和動態加載類 解釋查看全部
-
獲取Class實例的三種方式 比如 Fool f=new Fool() 1.Class c1=f.getClass;2.Class c2=Fool.class 3 Class c3=Class.forName("com.aa.bb.Fool"); 也可以根據 c1 or c2 or c3 獲取fool的實例化 Fool f2=(Fool)c2.newInstance() Instance 是實例的意思 用這個方法必須fool 有無參數的構造方法 且需要強制轉換 還有異常 拋出或捕獲查看全部
舉報
0/150
提交
取消