当前位置: 首页 > news >正文

网站建设人员岗位职责营销策划的步骤

网站建设人员岗位职责,营销策划的步骤,怎样做平台销售,网站建设傲JDKProxy生成对象的步骤如下#xff1a; 1、拿到被代理对象的引用#xff0c;并且获取到它的所有的接口#xff0c;反射获取。 2、JDKProxy类重新生成一个新的类、同时新的类要实现被代理类所有实现的所有的接 口。 3、动态生成Java代码#xff0c;把新加的业务逻辑方法由一…JDKProxy生成对象的步骤如下 1、拿到被代理对象的引用并且获取到它的所有的接口反射获取。 2、JDKProxy类重新生成一个新的类、同时新的类要实现被代理类所有实现的所有的接 口。 3、动态生成Java代码把新加的业务逻辑方法由一定的逻辑代码去调用在代码中体 现。 4、编译新生成的Java代码.class。 5、再重新加载到JVM中运行。 以上这个过程就叫字节码重组。JDK中有一个规范在ClassPath下只要是$开头的class 文件一般都是自动生成的。 package com.sp.demo.proxy;/*** author : lssffy* Description :* date : 2024/3/8 10:25*/ public interface OneDay {void eat();void play();void sleep(); } package com.sp.base.proxyhandler;import java.lang.reflect.Method;/*** author : lssffy* Description :* date : 2024/3/21 14:41*/ public interface SInvocationHandler {public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; } package com.sp.base.proxyhandler;import javax.tools.JavaCompiler; import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; import java.io.File; import java.io.FileWriter; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map;/*** author : lssffy* Description :* date : 2024/3/21 14:42*/ public class SProxy {private static final String ln \r\n;public static Object newProxyInstance(SClassLoader classLoader,Class? [] interfaces,SInvocationHandler h){try {//动态生成源代码。java文件String src generateSrc(interfaces);//Java文件输出磁盘String filePath SProxy.class.getResource().getPath();File f new File(filePath $Proxy0.java);FileWriter fw new FileWriter(f);fw.write(src);fw.flush();fw.close();//把生成的。java文件编译成。class文件JavaCompiler compiler ToolProvider.getSystemJavaCompiler();StandardJavaFileManager manager compiler.getStandardFileManager(null,null,null);Iterable iterable manager.getJavaFileObjects(f);JavaCompiler.CompilationTask task compiler.getTask(null,manager,null,null,null,iterable);task.call();manager.close();//把编译生成的。class文件加载到jvm中Class proxyClass classLoader.findClass($Proxy0);Constructor c proxyClass.getConstructor(SInvocationHandler.class);f.delete();//返回字节码重组以后的新的代理对象return c.newInstance(h);}catch (Exception e){e.printStackTrace();}return null;}private static String generateSrc(Class?[] interfaces) {StringBuffer sb new StringBuffer();sb.append(package com.sp.base.proxyhandler; ln);sb.append(import com.sp.demo.proxy.OneDay; ln);sb.append(import java.lang.reflect.*; ln);sb.append(public class $Proxy0 implements interfaces[0].getName() {ln);sb.append(SInvocationHandler h; ln);sb.append(public $Proxy0(SInvocationHandler h) { ln);sb.append(this.h h;);sb.append(} ln);for(Method m : interfaces[0].getMethods()){Class?[] params m.getParameterTypes();StringBuffer paramNamesnew StringBuffer();StringBuffer paramValuesnew StringBuffer();StringBuffer paramClasses new StringBuffer();for(int i 0;i params.length; i){Class clazzparams[i];String typeclazz.getName();String paramName toLowerFirstCase(clazz.getSimpleName());paramNames.append(type paramName);paramValues.append(paramName);paramClasses.append(clazz.getName() .class);if(i 0 i params.length-1){paramNames.append(,);paramClasses.append(,);paramValues.append(,);}}sb.append(public m.getReturnType().getName() m.getName() ( paramNames.toString() ){ ln);sb.append(try{ ln);sb.append(Method minterfaces[0].getName().class.getMethod(\m.getName() \,new Class[]{paramClasses.toString() }); ln);sb.append((hasReturnValue(m.getReturnType()) ?return : ) getCaseCode(this.h.invoke(this,m,new Object[]{paramValues}),m.getReturnType());ln);sb.append(}catch(Error _ex){ });sb.append(catch(Throwable e){ ln);sb.append(throw new UndeclaredThrowableException(e); ln);sb.append(});sb.append(getReturnEmptyCode(m.getReturnType()));sb.append(});}sb.append(} ln);return sb.toString();}private static MapClass,Class mappings new HashMapClass,Class();static {mappings.put(int.class,Integer.class);}private static String getReturnEmptyCode(Class? returnType) {if(mappings.containsKey(returnType)){return return 0;;}else if(returnType void.class){return ;}else{returnreturn null;;}}private static String getCaseCode(String s, Class? returnType) {if(mappings.containsKey(returnType)){return ((mappings.get(returnType).getName() ) s ).returnType.getSimpleName() Value();}return s;}private static boolean hasReturnValue(Class? returnType) {return returnType ! void.class;}private static String toLowerFirstCase(String simpleName) {char [] chars simpleName.toCharArray();chars[0] 32;return String.valueOf(chars);} } package com.sp.base.proxyhandler;import java.io.*;/*** author : lssffy* Description :* date : 2024/3/21 14:44*/ public class SClassLoader extends ClassLoader{private File classPathFile;public SClassLoader(){String classPath SClassLoader.class.getResource().getPath();this.classPathFile new File(classPath);}Overrideprotected Class? findClass(String name) throws ClassNotFoundException {String className SClassLoader.class.getPackage().getName() . name;if (classPathFile ! null) {File classFile new File(classPathFile,name.replace(\\, /) .class);if(classFile.exists()) {FileInputStream fis null;ByteArrayOutputStream out null;try {fis new FileInputStream(classFile);out new ByteArrayOutputStream();byte [] buff new byte[1024];int len;while((lenfis.read(buff))!-1){out.write(buff,0,len);}return defineClass(className,out.toByteArray(),0,out.size());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(null!fis){try {fis.close();} catch (IOException e) {e.printStackTrace();}}if(null!out){try {out.close();} catch (IOException e) {e.printStackTrace();}}}}}return null;} } package com.sp.demo.proxy;import com.sp.base.proxyhandler.SClassLoader; import com.sp.base.proxyhandler.SInvocationHandler; import com.sp.base.proxyhandler.SProxy;import java.lang.reflect.Method;/*** author : lssffy* Description :* date : 2024/3/21 14:15*/ public class InvocationHandlerJDK implements SInvocationHandler {private Object target;public Object getInstance(Object target) {this.target target;Class? targetClass target.getClass();return SProxy.newProxyInstance(new SClassLoader(),targetClass.getInterfaces(),this);}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {before();Object obj method.invoke(this.target, args);after();return obj;}private void before(){System.out.println(start runtime invocation);}private void after(){System.out.println(end runtime invocation);}} package com.sp.demo.proxy;/*** author : lssffy* Description :* date : 2024/3/8 10:26*/ public class LaoWang implements OneDay{Overridepublic void eat() {System.out.println(准备碗筷);System.out.println(开始吃饭);System.out.println(收拾碗筷);}Overridepublic void play() {System.out.println(打开电脑);System.out.println(登录账号);System.out.println(开始玩);}Overridepublic void sleep() {System.out.println(开始洗澡);System.out.println(躺倒床上);System.out.println(开始睡觉);} } package com.sp.demo.proxy;/*** author : lssffy* Description :* date : 2024/3/8 10:33*/ public class Test {public static void main(String[] args) {try {OneDay oneDay1 (OneDay) new InvocationHandlerJDK().getInstance(new LaoWang());oneDay1.play();oneDay1.eat();oneDay1.sleep();}catch(Exception e){e.printStackTrace();}} }
http://www.pierceye.com/news/493604/

相关文章:

  • wordpress导入网站模板wordpress部分图片
  • 无锡做网站365caiyi秘密直播
  • 无锡企业网站制作报价公司做网站需要哪些手续
  • 最好的营销型网站保险购买平台有哪些
  • 网站建设实训的目的网站开发的框架协议
  • 本地郑州网站建设搭建一个网站
  • 如何做网站竞品分析哪个网站可以接任务做兼职
  • 佛山网站关键词网站建设需求分析文档
  • 网站收录地址旅游网站建设的相关报价
  • seo月薪seo优化方法网站快速排名推广渠道
  • 企业网站设计理念如何seo网站
  • 河南移动商城网站建设怎么创建平台卖自己的产品
  • 网上做网站钱被骗了报案有用吗文章自定义wordpress
  • 网站设置成灰色市场监督管理局是什么单位
  • 北京国贸网站建设wordpress需要付费才能看某些页面
  • 郸城网站建设wordpress教程cms
  • 做本地网站赚钱吗?php网站制作过程中遇到的问题及解决办法
  • 上海网站快速排名提升ui是网站建设吗
  • 中信建设有限责任公司洪波seo外链工具
  • 网站服务器和空间有什么区别网站制作的公司哪家效果好
  • 做网站具体收费梅州南站
  • 淘宝禁止了网站建设类wordpress极速优化
  • 山东app网站制作网站建设优化广告流量
  • 做阿里云网站浏览器编程语言
  • 青岛市网站制作企业邮箱密码忘了怎么重置密码
  • 文交所网站开发和业务多一样的平台
  • 如何免费自己做网站wordpress成品图
  • thinkphp做中英文网站电子商务网站建设的步骤一般为
  • 网站编程 mysql小说关键词搜索器
  • 农业网站开发企业名录搜索软件免费