} 反射
Class cls = Class.forName("com.mychebao.zzm.entity.Car");//動(dòng)態(tài)加載類或者
ClassLoader loader = Thread.currentThread().getContextClassLoader();//獲得加載器Class cls = loader.loadClass("com.mychebao.zzm.entity.Car");//加載,感覺這個(gè)是個(gè)類的結(jié)構(gòu),包含所有東西就等著你拿起來用構(gòu)造函數(shù)
Constructor cons = cls.getDeclaredConstructor((Class[])null);//獲取構(gòu)造函數(shù)此處為無參的實(shí)例化對(duì)象
Car car = (Car)cons.newInstance();//構(gòu)造函數(shù)實(shí)例化Car或者Car car = (Car)cls.newInstance();//直接實(shí)例化操作對(duì)象
Method setBrand = cls.getDeclaredMethod("setBrand", String.class);//獲取參數(shù)是String的setBrand方法Method[] methods = cls.getMethods();//獲取所有方法(public的)Method[] methods = cls.getDeclaredMethods();//獲取所有方法setBrand.invoke(car, "碰碰車!");//對(duì)car對(duì)象執(zhí)行這個(gè)方法String name=method.getName();//獲取方法名Class[] types=method.getParameterTypes();//獲取方法的參數(shù)類型Field colorFld = cls.getDeclaredField("color");//獲取color屬性無論公私colorFld.setaccessible(true);//設(shè)置為可操作,如果是私有屬性設(shè)置為true后即可對(duì)其進(jìn)行進(jìn)一步操作,反射可以無視其private屬性,破防呀colorFld.set(pCar, "黑");直接給屬性賦值method.getAnnotation(Test.class);//方法是是否含有Test注解Class[] types = {String.class,int.class}; //參數(shù)是String和int的Method m = cls.getDeclaredMethod("name", types);//獲取方法名是name參數(shù)是String和int的方法新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注