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

张小明 2026/1/1 12:31:05
宁波网站推广公司报价,微信网页版本,做网站 被谷歌收录,做一个微信公众号需要多少钱分析方法四要素 我们先来看一下#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进行投诉反馈,一经查实,立即删除!

无锡网站建设价格云南网络营销文化优化

云计算与 Docker 技术全解析 1. 云计算服务提供商介绍 1.1 DigitalOcean DigitalOcean 虽不如 AWS 或 GCP 知名,但为中小型组织运行云系统提供了有趣的替代方案。其核心概念是“droplet”,这是一个能运行软件并通过配置连接不同网络(私有或公共)的组件。组装 droplet 只需…

张小明 2025/12/28 16:15:20 网站建设

济南网站建设用途无忧主机建站的过程

在数据的海洋中,最稀缺的不是数字,而是从数字中发现航向并清晰讲述故事的能力。 深夜的电脑屏幕前,一份满是数字的Excel表格、几个似是而非的图表草稿、一段对“p值是否显著”的反复纠结——这几乎是每一位进行实证研究的学生或学者都经历过的…

张小明 2025/12/28 16:15:18 网站建设

做企业网站排名优化要多少钱网站建设对服务器有舍要求吗

Linly-Talker用户案例分享:某银行数字客服上线实录 在手机银行App中,一位客户轻点“联系客服”,画面随即弹出一位面带微笑的年轻女性形象——她穿着整洁的职业装,眼神专注。客户刚说完“我忘记登录密码了怎么办”,不到…

张小明 2025/12/28 16:15:16 网站建设

建网站需求动漫制作专业需要了解哪些知识

如何快速配置开源音频驱动:非官方声卡兼容终极指南 【免费下载链接】AppleALC 项目地址: https://gitcode.com/gh_mirrors/app/AppleALC AppleALC 是一款专为 macOS 系统设计的开源音频驱动解决方案,能够完美解决非官方声卡兼容问题,…

张小明 2025/12/28 18:09:58 网站建设

免费一键建站官网大全网站跳出率怎么计算

Linly-Talker:打造可交互的数字人分身 —— “一键生成你的虚拟代言人” 在短视频、直播和AI浪潮席卷内容创作的今天,你有没有想过——有一天,你本人可以“不下场”,却依然在讲课、答疑、做客服、甚至接受采访? 这听…

张小明 2025/12/28 18:09:55 网站建设

免费网站做seo安卓下载软件app

用AI“拍电影”?Wan2.2-T2V-A14B正在改写高端视频制作规则 🎬 你有没有想过,一条原本需要导演、摄影师、灯光师、剪辑师团队折腾好几天的广告片,现在可能只需要输入一段话,90秒后就能生成高清成片?这听起来…

张小明 2025/12/28 18:09:53 网站建设