-
基元數(shù)組查看全部
-
宿主的反射查看全部
-
萬事萬物皆對象。
一個類只是Class的一個實例對象,且一個類只有一個Class的實例對象
查看全部 -
數(shù)據(jù)類型.class 稱為數(shù)據(jù)類型的類類型 直接輸出他的名稱為數(shù)據(jù)類型名稱
不包含包名的name? getSimpleName
getMethods獲取的是所有的Public的函數(shù),包括父類繼承而來的
getDeclaredMethod獲取的是所有該類自己聲明的方法,不論訪問權(quán)限
getReturnType獲取方法的返回值類型的類類型
getParameterTypes獲取參數(shù)類型? 得到的是參數(shù)列表的類型的類類型
查看全部 -
類也是對象,萬事萬物皆是對象,類是Class的對象,
使用反射創(chuàng)建實例對象,newInstance 需要有無參的構(gòu)造方法
查看全部 -
package?lmr; public?class?ClassUtil{ public?static?void?printClassMessage(Object?obj){ ?Class?c?=?boj.getClass(); ?System.out.println("類的名稱是:"+c.getName()); ?Method[]?ms?=?c.getMethods(); ?for(int?i=0;i<ms.length;i++){ ?Class?returnType?=?ms[i].getReturnType(); ?System.out.println(returnType.getName()+""); ?System.out.println(ms[i].getName()+"("); ?Class[]?paramTypes?=?ms[i].getParameterTypes(); ?for(Class?class1:paramTypes){ ?System.out.println(); ?} ?} } }
查看全部 -
package?lmr; public?class?ClassDemo2{ public?static?void?main(String[]?args){ Class?c1?=?int.class; Class?c2?=?String.class; Class?c3?=?double.class; Class?c4?=?Double.class; Class?c5?=?void.class; System.out.println(c1.getName()); System.out.println(c2.getName()); System.out.println(c2.getSimpleName()); System.out.println(c5.getName()); } }
查看全部 -
class?OfficeBetter {public?static?void?main(String[]?args) {try{Class?c?=?Class.forName(args[0]); OfficeAble?oa?=?(OfficeAble)c.newInstance();? oa.start(); } } }
查看全部 -
class?Excel?implements?OfficeAble { public?void?start() { System.out.println("excel..starts.."); } }
查看全部 -
class?OfficeBetter { public?static?void?main(String[]?args) { try { Class?c?=?Class.forName(args[0]); OfficeAble?oa?=?(OfficeAble)c.newInstance();? oa.start(); } } }
查看全部 -
class?Word { public?static?void?start() { System.out.println("word..starts.."); } }
查看全部 -
class?Office { public?static?void?main(String[]?args) { if("Word".equals(args[0]) { Word?w?=?new?Word(); w.start(); } if("Excel".equals(args[0])) { Excel?e?=?new?Excel(); e.start(); } } }
查看全部 -
類是對象,類是java.lang.Class類的實例對象
There is a class named Class
查看全部 -
package?lmr; public?class?ClassDemo1{ public?static?void?main(String[]?args){ Foo?foo1?=?new?Foo(); Class?c1?=?Foo.class; Class?c2?=?foo1.getClass(); System.out.println(c1?==?c2); Class?c3?=?null; try{ C3?=?Class.forName("lmr.Foo"); }catch(ClassNotFoundException?e){ e.printStackTrace(); } c3?=?Class.forName(); } System.out.println(c2?==?c3); } class?Foo{}
查看全部 -
反射的操作都是編譯之后的操作。
如圖中帶范式和不帶范式的list取類類型的結(jié)果相同,說明編譯之后結(jié)合的范式是去泛型化的。
Java中集合的泛型,是防止錯誤輸入的,只在編譯階段有效,繞過編譯就無效了。
驗證:如圖可以通過方法的反射來操作,繞過編譯,實現(xiàn)在一個ArrayList <string>中add加入一個數(shù)字20
注意:但是現(xiàn)在不能再使用for遍歷數(shù)。組了,否則會報類型錯誤。
查看全部
舉報