宁波网站推广公司报价微信网页版本

张小明 2026/1/19 19:14:58
宁波网站推广公司报价,微信网页版本,做网站 被谷歌收录,做一个微信公众号需要多少钱分析方法四要素 我们先来看一下#xff0c;不使用反射机制调用一个方法需要几个要素的参与。 有一个这样的类#xff1a; package com.powernode.reflect;/*** author 动力节点* version 1.0* className SystemService* since 1.0**/ public class SystemService {public voi…分析方法四要素我们先来看一下不使用反射机制调用一个方法需要几个要素的参与。有一个这样的类packagecom.powernode.reflect;/** * author 动力节点 * version 1.0 * className SystemService * since 1.0 **/publicclassSystemService{publicvoidlogout(){System.out.println(退出系统);}publicbooleanlogin(Stringusername,Stringpassword){if(admin.equals(username)admin123.equals(password)){returntrue;}returnfalse;}}编写程序调用方法packagecom.powernode.reflect;/** * author 动力节点 * version 1.0 * className ReflectTest01 * since 1.0 **/publicclassReflectTest01{publicstaticvoidmain(String[]args){// 创建对象SystemServicesystemServicenewSystemService();// 调用方法并接收方法的返回值booleansuccesssystemService.login(admin,admin123);System.out.println(success?登录成功:登录失败);}}通过以上第16行代码可以看出调用一个方法一般涉及到4个要素调用哪个对象的systemService哪个方法login传什么参数“admin”, “admin123”返回什么值success获取Method要使用反射机制调用一个方法首先你要获取到这个方法。在反射机制中Method实例代表的是一个方法。那么怎么获取Method实例呢有这样一个类packagecom.powernode.reflect;/** * author 动力节点 * version 1.0 * className SystemService * since 1.0 **/publicclassSystemService{publicvoidlogout(){System.out.println(退出系统);}publicbooleanlogin(Stringusername,Stringpassword){if(admin.equals(username)admin123.equals(password)){returntrue;}returnfalse;}publicbooleanlogin(Stringpassword){if(110.equals(password)){returntrue;}returnfalse;}}我们如何获取到 logout()、login(String,String)、login(String) 这三个方法呢要获取方法Method首先你需要获取这个类Class。ClassclazzClass.forName(com.powernode.reflect.SystemService);当拿到Class之后调用getDeclaredMethod()方法可以获取到方法。假如你要获取这个方法login(String username, String password)MethodloginMethodclazz.getDeclaredMethod(login,String.class,String.class);假如你要获取到这个方法login(String password)MethodloginMethodclazz.getDeclaredMethod(login,String.class);获取一个方法需要告诉Java程序你要获取的方法的名字是什么这个方法上每个形参的类型是什么。这样Java程序才能给你拿到对应的方法。这样的设计也非常合理因为在同一个类当中方法是支持重载的也就是说方法名可以一样但参数列表一定是不一样的所以获取一个方法需要提供方法名以及每个形参的类型。假设有这样一个方法publicvoidsetAge(intage){this.ageage;}你要获取这个方法的话代码应该这样写MethodsetAgeMethodclazz.getDeclaredMethod(setAge,int.class);其中setAge是方法名int.class是形参的类型。如果要获取上面的logout方法代码应该这样写MethodlogoutMethodclazz.getDeclaredMethod(logout);因为这个方法形式参数的个数是0个。所以只需要提供方法名就行了。你学会了吗调用Method要让一个方法调用的话就关联到四要素了调用哪个对象的哪个方法传什么参数返回什么值packagecom.powernode.reflect;/** * author 动力节点 * version 1.0 * className SystemService * since 1.0 **/publicclassSystemService{publicvoidlogout(){System.out.println(退出系统);}publicbooleanlogin(Stringusername,Stringpassword){if(admin.equals(username)admin123.equals(password)){returntrue;}returnfalse;}publicbooleanlogin(Stringpassword){if(110.equals(password)){returntrue;}returnfalse;}}假如我们要调用的方法是login(String, String)第一步创建对象四要素之首调用哪个对象的ClassclazzClass.forName(com.powernode.reflect.SystemService);Objectobjclazz.newInstance();//过时方法第二步获取方法login(String,String)四要素之一哪个方法MethodloginMethodclazz.getDeclaredMethod(login,String.class,String.class);第三步调用方法ObjectretValueloginMethod.invoke(obj,admin,admin123);解说四要素哪个对象obj哪个方法loginMethod传什么参数“admin”, “admin123”返回什么值retValuepackagecom.powernode.reflect;importjava.lang.reflect.Method;/** * author 动力节点 * version 1.0 * className ReflectTest02 * since 1.0 **/publicclassReflectTest02{publicstaticvoidmain(String[]args)throwsException{ClassclazzClass.forName(com.powernode.reflect.SystemService);Objectobjclazz.newInstance();MethodloginMethodclazz.getDeclaredMethod(login,String.class,String.class);ObjectretValueloginMethod.invoke(obj,admin,admin123);System.out.println(retValue);}}那如果调用既没有参数又没有返回值的logout方法应该怎么做packagecom.powernode.reflect;importjava.lang.reflect.Method;/** * author 动力节点 * version 1.0 * className ReflectTest03 * since 1.0 **/publicclassReflectTest03{publicstaticvoidmain(String[]args)throwsException{ClassclazzClass.forName(com.powernode.reflect.SystemService);Objectobjclazz.newInstance();MethodlogoutMethodclazz.getDeclaredMethod(logout);logoutMethod.invoke(obj);}}假设你知道属性名假设有这样一个类packagecom.powernode.reflect;/** * author 动力节点 * version 1.0 * className User * since 1.0 **/publicclassUser{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.ageage;}OverridepublicStringtoString(){returnUser{namename\, ageage};}}你知道以下这几条信息类名是com.powernode.reflect.User该类中有String类型的name属性和int类型的age属性。另外你也知道该类的设计符合javabean规范。也就是说属性私有化对外提供setter和getter方法你如何通过反射机制给User对象的name属性赋值zhangsan给age属性赋值20岁。packagecom.powernode.reflect;importjava.lang.reflect.Method;/** * author 动力节点 * version 1.0 * className UserTest * since 1.0 **/publicclassUserTest{publicstaticvoidmain(String[]args)throwsException{// 已知类名StringclassNamecom.powernode.reflect.User;// 已知属性名StringpropertyNameage;// 通过反射机制给User对象的age属性赋值20岁Class?clazzClass.forName(className);Objectobjclazz.newInstance();// 创建对象// 根据属性名获取setter方法名StringsetMethodNamesetpropertyName.toUpperCase().charAt(0)propertyName.substring(1);// 获取MethodMethodsetMethodclazz.getDeclaredMethod(setMethodName,int.class);// 调用MethodsetMethod.invoke(obj,20);System.out.println(obj);}}执行结果给User的name属性赋值zhangsan这个大家可以尝试自己完成哦
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发的现状公司手机网站模板免费下载

在传统3D渲染技术面临瓶颈的今天,Brush渲染引擎凭借其创新的高斯泼溅技术,正在重新定义我们对3D场景表示和渲染的理解。这项技术不仅解决了传统多边形网格在表示复杂几何结构时的局限性,更为实时3D重建和可视化带来了革命性的突破。 【免费下…

张小明 2026/1/17 22:38:30 网站建设

宝安网站制作哪家强可以做免费推广的网站吗

第一章:Open-AutoGLM闭源倒计时:你不可错过的AI智能回复革命随着人工智能技术的飞速演进,Open-AutoGLM 正在迎来其从开源走向闭源的关键转折点。这一转变不仅标志着模型商业化路径的成熟,更预示着一场关于智能回复体验的全面升级。…

张小明 2026/1/17 22:38:10 网站建设

做兼职打字员的网站沈阳企业网站制作

还在为抢不到心仪演唱会门票而烦恼吗?面对秒光的票务竞争,手动操作已经无法满足需求。DamaiHelper作为基于PythonSelenium开发的自动化抢票工具,能够帮你轻松获取热门演出门票,让你告别抢票焦虑。 【免费下载链接】DamaiHelper 大…

张小明 2026/1/17 22:38:24 网站建设

怎么架设个人网站装修公司网站建设

第一章:构建个性化资讯流的5大核心步骤(Open-AutoGLM实战指南)在信息过载的时代,个性化资讯流成为提升用户粘性和阅读效率的关键。Open-AutoGLM 提供了一套灵活高效的框架,帮助开发者快速搭建基于用户兴趣的动态内容推…

张小明 2026/1/17 22:38:25 网站建设

自己做网站还是公众号石景山上海网站建设

WindowResizer:打破窗口限制,重塑桌面布局体验 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 在数字工作环境中,你是否经常遇到无法调整大小的…

张小明 2026/1/17 22:47:13 网站建设

做app必须有网站吗最新军事新闻头条重大

如何彻底解决Supersplat开发缓存问题:5个高效配置技巧 【免费下载链接】supersplat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/supersplat Supersplat作为一款基于Web技术的3D高斯溅射编辑器,在本地开发过程中经常会…

张小明 2026/1/17 22:38:41 网站建设