您好,登錄后才能下訂單哦!
小編給大家分享一下java反射應用的案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
反射使用JAVA反應進行兩個vo有相同字段名字進行子轉換:
@Test public void doTransTest() { A a= new A(); A.setC(111L); B b= new B(); doTrans(a, b); } /** *@param sour 來源vo *@param dest 待轉換vo */ public void doTrans(Object sour, Object dest) { if (sour == null) { dest = null; return; } //反射原理應用 Class<?> sourceClass = sour.getClass(); Class<?> destClass = dest.getClass(); for (Field field : sourceClass.getDeclaredFields()) { String fieldName = field.getName(); Object value; if (fieldName.equals("serialVersionUID")) { continue; } try { PropertyDescriptor propertyDescriptor = new PropertyDescriptor(fieldName, sourceClass); value = propertyDescriptor.getReadMethod().invoke(sour); } catch (Exception e) { //log continue; } if (value == null) { continue; } try { PropertyDescriptor propertyDescriptor = new PropertyDescriptor(fieldName, destClass); propertyDescriptor.getWriteMethod().invoke(dest, value); } catch (Exception e) { //log continue; } } }
SpringIOC反射的應用:
/** * springIOC和反射test * * @throws Exception */ @Test public void reflexTest() throws Exception { /** * 第一步,springIOC解析如下bean * <bean id="cartBean" class="com.mmall.pojo.Cart"></bean> */ //解析bean字符串xxxxx String beanId = "cartBean"; String beanClass = "com.mmall.pojo.Cart"; Class<?> cls = Class.forName(beanClass); Object object = cls.newInstance(); //模擬spring容器 Map container = Maps.newHashMap(); //bean注入spring容器,實例化成功 container.put(beanId, object); /** * 第二步:模擬ref注入 * <bean id="cartBean" class="com.mmall.pojo.Cart"></bean> * <property name="user" ref="userBean"></property> * <bean> */ //初始化refBean(userBean) String beanIdUser = "cartBean"; String beanClassUser = "com.mmall.pojo.User"; Class<?> clsUser = Class.forName(beanClassUser); Object objectUser = clsUser.newInstance(); //并注入spring容器 container.put(beanIdUser,objectUser); //得到cartBean的setUser方法 String setUserName = "setUser"; Object paramBean = container.get(beanIdUser); //cls是cart對象 Method setter = cls.getMethod(setUserName, objectUser.getClass()); //注入set方法 setter.invoke(object, paramBean); }
以上是java反射應用的案例的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。