范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java,反射机制,反射调用,静态方法,实例方法,Setter和Getter

  说明
  参考内容:
  1、反射机制,调用属性(静态&非静态);2、反射机制,调用构造方法(静态&非静态)。
  getter/setter方法
  定义一些方法来操作成员变量,每个方法都必须有一个有意义的名称,所以就有了getter-setter方法,getter-setter方法格式和写法都是固定的,所以只要有getter-setter方法就不用煞费心思的去想方法名称了,解决了起名字难问题。并且getter-setter方法还是程序员之间的一种规范,给属性赋值立刻就会想到getter-setter方法,降低了程序员之间的沟通成本。代码案例
  工具类: import org.apache.commons.lang3.StringUtils;  import java.lang.reflect.Method; import java.util.List;  public class ReflectCallMethod {      /**      * @param entryClass      * @param methodName      * @param       * @return      */     public static  T invokeForStatic(Class entryClass, String methodName) {         if (entryClass == null) {             return null;         }         T result = null;         try {             // 反射获取             Method method = entryClass.getDeclaredMethod(methodName);             method.setAccessible(true);             return (T) method.invoke(entryClass);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }      /**      * @param entryClass      * @param methodName      * @param classArgs      * @param valueArgs      * @param       * @return      */     public static  T invokeForStatic(Class entryClass, String methodName, Class[] classArgs, Object[] valueArgs) {         if (entryClass == null) {             return null;         }         T result = null;         try {             Method method = entryClass.getDeclaredMethod(methodName, classArgs);             method.setAccessible(true);             return (T) method.invoke(entryClass, valueArgs);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }      /**      * @param entryClass      * @param methodName      * @param initArgs      * @param       * @return      */     public static  T invokeForStatic(Class entryClass, String methodName, List initArgs) {         if (entryClass == null) {             return null;         }         T result = null;         try {             Class[] classArgs = new Class[initArgs.size()];             Object[] valueArgs = new Object[initArgs.size()];             for (int i = 0; i < initArgs.size(); i++) {                 classArgs[i] = initArgs.get(i).getClass();                 valueArgs[i] = initArgs.get(i);             }             Method method = entryClass.getDeclaredMethod(methodName, classArgs);             method.setAccessible(true);             return (T) method.invoke(entryClass, valueArgs);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }      /**      * @param entryObject      * @param methodName      * @param       * @return      */     public static  T invokeForInstance(Object entryObject, String methodName) {         if (entryObject == null) {             return null;         }         T result = null;         try {             // 反射获取             Method method = entryObject.getClass().getDeclaredMethod(methodName);             method.setAccessible(true);             return (T) method.invoke(entryObject);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }      /**      * @param entryObject      * @param methodName      * @param classArgs      * @param valueArgs      * @param       * @return      */     public static  T invokeForInstance(Object entryObject, String methodName, Class[] classArgs, Object[] valueArgs) {         if (entryObject == null) {             return null;         }         T result = null;         try {             Method method = entryObject.getClass().getDeclaredMethod(methodName, classArgs);             method.setAccessible(true);             return (T) method.invoke(entryObject, valueArgs);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }      /**      * @param entryObject      * @param methodName      * @param initArgs      * @param       * @return      */     public static  T invokeForInstance(Object entryObject, String methodName, List initArgs) {         if (entryObject == null) {             return null;         }         T result = null;         try {             Class[] classArgs = new Class[initArgs.size()];             Object[] valueArgs = new Object[initArgs.size()];             for (int i = 0; i < initArgs.size(); i++) {                 classArgs[i] = initArgs.get(i).getClass();                 valueArgs[i] = initArgs.get(i);             }             Method method = entryObject.getClass().getDeclaredMethod(methodName, classArgs);             method.setAccessible(true);             return (T) method.invoke(entryObject, valueArgs);         } catch (Exception e) {             e.printStackTrace();         }         return result;     }       //=============================================================================================//     // getter and setter     //=============================================================================================//      /**      * @param entryObject      * @param methodName      * @param       * @return      */     public static  E getInvoke(Object entryObject, String methodName) {         if (entryObject == null || StringUtils.isEmpty(methodName)) {             return null;         }         try {             Method method = entryObject.getClass().getDeclaredMethod(methodName);             method.setAccessible(true);             Object returnValue = method.invoke(entryObject);             return (E) returnValue;         } catch (Exception ex) {             ex.printStackTrace();         }         return null;     }      /**      * @param entryObject      * @param fieldName      * @param       * @return      */     public static  E getInvokeByFieldName(Object entryObject, String fieldName) {         if (entryObject == null || StringUtils.isEmpty(fieldName)) {             return null;         }         try {             String methodName = "get" + StringUtils.capitalize(fieldName);             Method method = entryObject.getClass().getDeclaredMethod(methodName);             method.setAccessible(true);             Object returnValue = method.invoke(entryObject);             return (E) returnValue;         } catch (Exception ex) {             ex.printStackTrace();         }         return null;     }      /**      * @param entryObject      * @param methodName      * @param       * @return      */     public static  E setInvoke(Object entryObject, String methodName, Object object) {         if (entryObject == null || StringUtils.isEmpty(methodName)) {             return null;         }         try {             Method method = entryObject.getClass().getDeclaredMethod(methodName, object.getClass());             method.setAccessible(true);             Object returnValue = method.invoke(entryObject, object);             return (E) returnValue;         } catch (Exception ex) {             ex.printStackTrace();         }         return null;     }       /**      * @param entryObject      * @param fieldName      * @param       * @return      */     public static  E setInvokeByFieldName(Object entryObject, String fieldName, Object object) {         if (entryObject == null || StringUtils.isEmpty(fieldName)) {             return null;         }         try {             String methodName = "set" + StringUtils.capitalize(fieldName);             Method method = entryObject.getClass().getDeclaredMethod(methodName, object.getClass());             method.setAccessible(true);             Object returnValue = method.invoke(entryObject, object);             return (E) returnValue;         } catch (Exception ex) {             ex.printStackTrace();         }         return null;     }      //=============================================================================================//     // the end     //=============================================================================================//  }
  测试类: import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;  import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.Map;  @Data @AllArgsConstructor @NoArgsConstructor public class User implements Serializable, Cloneable {      private Integer id;      private String name;      private Date createTime;      /**      * 静态方法1      */     public static void testCall1() {         System.out.println("testCall.1");     }      /**      * 静态方法2      * @param paramsMap      * @return      */     public static Map testCall2(Map paramsMap) {         System.out.println("testCall.2," + paramsMap);         return paramsMap;     }      /**      * 静态方法      * @param paramsMap      * @return      */     public static Map testCall3(HashMap paramsMap) {         System.out.println("testCall.3," + paramsMap);         return paramsMap;     }      /**      * 实例方法1      */     public void testCall11() {         System.out.println("testCall.11");     }      /**      * 实例方法2      * @param paramsMap      * @return      */     public Map testCall12(Map paramsMap) {         System.out.println("testCall.12," + paramsMap);         return paramsMap;     }      /**      * 实例方法3      * @param paramsMap      * @return      */     public Map testCall13(HashMap paramsMap) {         System.out.println("testCall.13," + paramsMap);         return paramsMap;     }   }import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.Map;  public class ReflectCallMethodDemo {      public static void main(String[] args) {         // 静态方法调用=====1         Object result1 = ReflectCallMethod.invokeForStatic(User.class, "testCall1");         System.out.println("result1 is null ," + result1);         // 静态方法调用=====2         Map paramsMap1 = new HashMap<>();         paramsMap1.put("map", new Object());         Map result2 = ReflectCallMethod.invokeForStatic(User.class, "testCall2",                 new Class[]{Map.class}, new Object[]{paramsMap1});         System.out.println("result2 is map ," + result2);         // 静态方法调用=====3         Map result3 = ReflectCallMethod.invokeForStatic(User.class, "testCall3", Arrays.asList(paramsMap1));         System.out.println("result3 is map ," + result3);          // 实例方法调用1         User user = new User();         Object result11 = ReflectCallMethod.invokeForInstance(user, "testCall11");         System.out.println("result11 is null ," + result11);         // 实例方法调用=====2         Map paramsMap21 = new HashMap<>();         paramsMap1.put("map", new Object());         Map result12 = ReflectCallMethod.invokeForInstance(user, "testCall12",                 new Class[]{Map.class}, new Object[]{paramsMap21});         System.out.println("result12 is map ," + result2);         // 实例方法调用=====3         Map result13 = ReflectCallMethod.invokeForInstance(user, "testCall13", Arrays.asList(paramsMap21));         System.out.println("result13 is map ," + result13);          // setter and getter         User user2 = new User(2, "子贡", new Date());         String name = ReflectCallMethod.getInvoke(user2, "getName");         System.out.println("method name get ," + name);         String name2 = ReflectCallMethod.getInvokeByFieldName(user2, "name");         System.out.println("field name get ," + name2);         ReflectCallMethod.setInvoke(user2, "setName", "闵损");         ReflectCallMethod.setInvokeByFieldName(user2, "id", 200);         int id = ReflectCallMethod.getInvoke(user2, "getId");         System.out.println("method name get ," + id);         String name3 = ReflectCallMethod.getInvokeByFieldName(user2, "name");         System.out.println("field name get ," + name3);     }  }
双11数码新品清单来了!从笔记本到耳机都有推荐,赶紧收藏双11如期而至,不知道大家今年弄明白了各大电商平台的活动玩法了吗?没搞清楚其实也没关系,毕竟很多商家都拿出了无套路的直降优惠,买到还是非常划算的,特别是一些的数码产品,不仅原价的性双11开门红游戏玩家要买什么?ROG5s系列限时优惠别错过如今,双十一的高潮日子之一即将到来,那就是双十一的开门红,不少产品都在这个时间段开启最大力度的促销,吸引众多用户抢购。而对于游戏玩家来说,除了抢购生活用品,入手一款给力的游戏手机是双十一值得买的数码好物推荐,价格没套路,体验感拉满一年一度的双11正在火热进行中,想必很多人都在此期间选购到了自己心仪的物品,而由于今年的双11延长了时间,所以从现在到11日,都还是大家入手好物的好时期。但是,面对市面上五花八门的XYDL45手动地拉幕DL45手动地拉幕是XY银幕新推出的一款新型移动便携式投影幕。DL45手动地拉幕的特点在于携带方便且使用时可以不受场地的限制,无论是客厅商务会所独立视听室,甚至是户外庭院等流动场所XY隐藏天花黑晶抗光幕与装修融为一体,完美适应各种环境想在家里体验巨幕家庭影院,但总是有各种因素让你犹豫不决。像是安装画框幕会与电视墙相互遮盖?电动幕壁挂安装也会与装修样式格格不入,另外地升幕也会使狭小的客厅变得更拥挤。而XY银幕新型深耕线下市场,坚果投影广州天河城首家直营店正式开业8月14日,坚果投影全国首家直营店广州天河城直营店隆重开业。坚果投影烁视科技总经理王紫昀先生及部分高管人员博源基金合伙人何宇参加开业仪式并进行剪彩,与到场的嘉宾朋友们一同见证荣耀时BenQGV30内置2。1声道的智能便携投影机许多投影机都会内置音响,但充其量只是能出声而已。BenQ(明基)可能希望通过全新发布的GV30来改变这一现象,它被称之为第一款具有2。1声道蓝牙音箱的智能便携式投影机。GV30有着McIntosh美国麦景图MA252前胆后石合并式功放麦景图是以胆机起家,后来也开始做晶体机(石机),以大瓦数的强劲驱动力让音响迷折服。直到现在,麦景图的前后级都有石机与胆机两个完全不同的产品线。而麦景图MA252前胆后石合并式功放是音响销售面对面之我卖音响的这些年(连载完)前文回顾音响销售面对面之我卖音响的这些年(连载2)销售与客人之间,是彼此求知的状态,周师华,广州时代音响店店长,从业超过17年我没从事过其它行业,读完书之后,因为玩音响的原因,认识海信王伟激光显示产业,未来的故事会越来越多激光电视堪称平板显示领域异军突起的一员,市场地位如何,发展路径有哪些,备受关注。纵观该话题,最具发言权的,莫过于海信,近日影音CN专程采访了海信激光显示股份有限公司副总经理王伟。激JVC推DLAN118等4款新品,为全球首个8K60p输入家用影院投影机系列JVC建伍公司于今日(9月2日)宣布旗下JVC品牌将推出全球首个148Gbps传输速率8K60p输入的家用影院投影机系列,其搭载混合激光系统,兼容HDR10。4款新品型号分别为DL
realme首款平板电脑再曝跑分!vivo超大杯真机实拍来了SK数码科技目前市面上已经有多款2K价位段的安卓平板,竞争力都还是蛮强的,接下来蓝绿厂商也会接力推出中高端平板,感觉还是有冲击到iPad的吧!据数码博主爆料realme狂堆散热定位vivoX70系列再曝详细参数细节,首发自研V1芯片,大家看好吗?SK数码科技9月4日!日前,数码博主发文称蓝厂最近一直预热的都是超大杯X70Pro。或许是4K5K价位段国内份额已经TOP2了。所以预计售价会在力5K到7K价位段的品,要冲超高端。公认性价比高的机型,配置超出定价,体验姣好第一款iPhone11首先要说的是苹果上一代的主打产品iPhone11系列,有些朋友可能会说,iPhone手机怎么能叫低价高配呢?但以目前的价格来看,iPhone11确实很便宜。比三星新旗舰曝光,后置高达2亿像素120W快充,价格令人期待近年来,三星手机在国内市场的表现仍不尽如人意,连续多年处于别人的地位,这是三星在国内市场下滑的主要原因。除了三星Note7的火爆,国产手机的崛起也是一个非常重要的环节。现在在线下市三星s22配置再曝光,影像方面有所升级,或将搭载5000万像素镜头与三星的超大相机相比,超大相机的摄像头规格更一般,没有任何特别的功能,但未来的GalaxyS22和S22的摄像头规格可能会让人有点惊讶。根据Fronttron在社交媒体上的报道,三我国首台套大型永磁电机整体充磁装备研制成功6月9日,华中科技大学国家脉冲强磁场科学中心研制的国内首台套大型永磁电机整体充磁装备,在湘潭电机股份有限公司成功完成了2。5MW直驱永磁风力发电机转子的整体充磁。充磁后的永磁风力发iQOO发表不当言论引起热议!小米OV系列也能刷机改鸿蒙OS系统?8月31日三条消息摘要!iQOO在B站发表不当言论,引起网友热议SK数码科技据iQOO昨晚消息,iQOO手机的B站官方账号发表不当言论一事,相信大家都应该知道,看到了。今天凌晨,i深化东西部协作杭锅集团与西南交通大学签署产学研项目合作6月17日,浙江四川深化东西部协作和交流合作项目签约仪式在成都举行。作为浙川协作科技创新领域的代表项目,杭锅集团牵手西南交通大学,双方将致力于新型液流电池储能系统的研发及应用,解决中信重工高端矿山装备应用示范基地在洛钼揭牌6月22日上午,中信重工高端矿山装备应用示范基地在洛钼中国区选矿三公司揭牌。揭牌仪式现场这是中信重工践行制造强国使命,持续发挥高端制造优势,高质量匹配客户需求的典范之作,将引领带动双11两百元价位,闭着眼睛选漫步者LolliPodsMini真无线蓝牙耳机双11将至,不论是学生党白领人士,还是有打算换新蓝牙耳机的朋友,在加购蓝牙耳机时,总会被市场上琳琅满目的产品深受选择焦虑症的困扰。选择一款佩戴舒适蓝牙连接稳定音质表现优异续航能力够您不知道的驾驶证在国内,所有合法的机动车驾驶员都拥有一个属于自己的小本本驾驶证。可是关于这驾驶证您知道多少呢,2008年4月1日起,全面启用新版驾驶证(俗称08版)其主要由驾驶证皮套驾驶证主页驾驶