电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java 動態生成類和實例, 并注入方法操作示例

瀏覽:87日期:2022-09-05 10:05:18

本文實例講述了Java 動態生成類和實例, 并注入方法。分享給大家供大家參考,具體如下:

Java官方支持的, 必須要有接口才行

import java.lang.reflect.Constructor;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.LinkedList;import java.util.List;import java.util.Random;/** * @author David Ding * */interface IJavaGen { int getRandomInt(); void printClassInfo();}abstract class JavaGen implements IJavaGen { protected List<String> calledMethods = new LinkedList<>(); // property public int getRandomInt() { // Get a random integerreturn new Random().nextInt(10000); } public abstract void printClassInfo();}class JavaGenHandler implements InvocationHandler { private JavaGen mTarget; public JavaGenHandler(JavaGen javaGen) {mTarget = javaGen; } // 動態注入 @Override public Object invoke(Object obj, Method method, Object[] params) throws Throwable {Object ret = null;String name = method.getName();if (name.equals('getRandomInt')) { // intercept the getRandomInt ret = method.invoke(mTarget, params); // call the base method System.out.println('Print random int: ' + ret);} else if (name.equals('printClassInfo')) { // print class info System.out.println('Class: ' + obj.getClass()); method.invoke(mTarget, params);}mTarget.calledMethods.add(name); // change the propertyreturn ret; }}public class JavaCodeGen { public static void main(String[] args) {try { Class<?> genClass = Proxy.getProxyClass(IJavaGen.class.getClassLoader(), IJavaGen.class); Constructor<?> cons = genClass.getConstructor(InvocationHandler.class); JavaGen target = new JavaGen() {@Overridepublic void printClassInfo() { System.out.println('I have to implement this method!!');} }; IJavaGen javaGen = (IJavaGen) cons.newInstance(new JavaGenHandler(target)); javaGen.getRandomInt(); javaGen.printClassInfo(); System.out.println(target.calledMethods);} catch (Exception e) { e.printStackTrace();} }}

運行結果:

Print random int: 8143Class: class demo.$Proxy0I have to implement this method!![getRandomInt, printClassInfo]

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
主站蜘蛛池模板: 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 广西正涛环保工程有限公司【官网】| 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 山楂片_雪花_迷你山楂片_山楂条饼厂家-青州市丰源食品厂 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 储气罐,真空罐,缓冲罐,隔膜气压罐厂家批发价格,空压机储气罐规格型号-上海申容压力容器集团有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | 德国BOSCH电磁阀-德国HERION电磁阀-JOUCOMATIC电磁阀|乾拓百科 | 合肥宠物店装修_合肥宠物美容院装修_合肥宠物医院设计装修公司-安徽盛世和居装饰 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 浙江美尔凯特智能厨卫股份有限公司 | 缝纫客| 汽液过滤网厂家_安平县银锐丝网有限公司 | CPSE安博会| 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 数控走心机-走心机价格-双主轴走心机-宝宇百科 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 |