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

高安网站制作罗湖网站建设

高安网站制作,罗湖网站建设,合肥做淘宝网站建设,天津黄页企业名录文章目录前言一、私有方法在本类中直接调用1.1、在本类中实例化#xff0c;调用私有方法1.2、尝试在其他类直接调用私有方法#xff08;错误示范#xff09;二、使用反射实例化类强制调用私有方法2.1、使用类加载器加载被调用的类2.2、使用 Object 类对获取的类进行实例化2.… 文章目录前言一、私有方法在本类中直接调用1.1、在本类中实例化调用私有方法1.2、尝试在其他类直接调用私有方法错误示范二、使用反射实例化类强制调用私有方法2.1、使用类加载器加载被调用的类2.2、使用 Object 类对获取的类进行实例化2.3、调用 Java 反射中的 Method 类2.4、取消 Java 语言的访问检查2.5、使用 method 方法返回对象三、完整实现代码、运行结果总结前言 在 Java 中如果我们使用 new 关键字调用构造函数对类进行实例化我们就可以根据在这个类中的修饰符来访问类中定义的非私有方法。但是如果需要在其他类调用私有的方法就可以利用 Java 中提供的反射来实现。 一、私有方法在本类中直接调用 1.1、在本类中实例化调用私有方法 说明被 private 关键字修饰的构造方法、方法或者数据域只在其所在的类中可见。 如下我们创建一个 Demo 类并定义一个私有的方法 demo()使用 main 函数在本类中使用 new 关键字实例化类去调用 demo() 方法运行成功输出结果代码如下 package com.bailu.demo;public class Demo {private void demo() {System.out.println(私有方法);}// 私有方法只有在本类中可以访问public static void main(String[] args) {Demo demo new Demo();demo.demo();} }1.2、尝试在其他类直接调用私有方法错误示范 如果我们直接在其他的类中实例化 Demo 类来直接调用 demo() 方法就会发现 IDE 直接产生编译错误很明显我们直接在另一个类中调用私有方法是行不通的IDE 提示我们把 private 修饰符去掉这又是不满足我们需求的如下图所示 二、使用反射实例化类强制调用私有方法 2.1、使用类加载器加载被调用的类 Class? cls Class.forName(com.bailu.demo.Demo);说明这里的Class? 即为 Java 中的泛型。以下是我们在开发中常见的几种泛型 表示不确定的 Java 类型T 表示 Java 类型K V 分别代表 Java 键值中的 Key ValueE 代表 Element 2.2、使用 Object 类对获取的类进行实例化 Object obj cls.newInstance();说明Object是所有类的根类是具体的一个类使用的时候可能需要类型强制转换的但是用通配符 ?、T 、K 、V、 E 等这些的话在实际用之前类型就已经确定了不需要强制转换。 2.3、调用 Java 反射中的 Method 类 Method method cls.getDeclaredMethod(demo, null);说明Method类是java.lang.reflect中提供的一个类。我们通过实例化Method类来调用Method类中的方法常用方法有以下几个 getMethods()获得类的 public 类型的方法getMethod(String name, Class[] params)获得类的特定方法name 参数指定方法的名字params 参数指定方法的参数类型getDeclaredMethods()获取类中所有的方法(public、protected、default、private)getDeclaredMethod(String name, Class[] params)获得类的特定方法name 参数指定方法的名字params 参数指定方法的参数类型 这里我们调用第四个获取 Demo 类的 demo() 方法参数类型为 null。 2.4、取消 Java 语言的访问检查 method.setAccessible(true);setAccessibletrue/false表示禁用和启用安全检查的开关。 说明当值为true时指反射对象在使用时应该取消 Java 语言访问检查值为false则只是反射的对象应该试试 Java 语言访问检查。当值设置为true时不接受检查可以提高反射的运行速度。 2.5、使用 method 方法返回对象 使用 method.invoke(Object obj,Object args[]);返回对象强制执行对象中的目标方法代码如下 method.invoke(obj, null);说明Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象如果参数为基本类型数据必须转换为相应的包装类型的对象。invoke()方法的返回值总是对象如果实际被调用的方法的返回类型是基本类型数据那么invoke()方法会把它转换为相应的包装类型的对象再将其返回。 三、完整实现代码、运行结果 Demo 类 package com.bailu.demo;public class Demo {private void demo() {System.out.println(私有方法);}// 私有方法只有在本类中可以访问public static void main(String[] args) {Demo demo new Demo();demo.demo();} }TestDemo 类 package com.bailu.demo;import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;public class TestDemo {public static void main(String[] args) throws ClassNotFoundException, InstantiationException,IllegalAccessException, IllegalArgumentException, InvocationTargetException {// 1、使用类加载器加载被调用的类Class? cls Class.forName(com.bailu.demo.Demo);// 2、使用Object类对获取的类进行实例化Object obj cls.newInstance();// 将异常抛出try {// 3、调用Java反射中的Method类将私有方法封装在obj中Method method cls.getDeclaredMethod(demo, null);// 取消 Java 语言的访问检查method.setAccessible(true);// 4、使用method.invoke(Object obj,Object args[]);返回对象method.invoke(obj, null);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();}} }运行结果如下图所示 总结 在我们的开发过程中通常只有实体类Entity中的成员变量使用 private 修饰并且会提供访问这些变量的 get 和 set 方法。原则上要求不准定义私有的方法我们使用 method.invoke(Object obj,Object args[]); 强制调用对象调用私有方法违反了我们 Java 中面向对象的特性。 我是白鹿一个不懈奋斗的程序猿。望本文能对你有所裨益欢迎大家的一键三连若有其他问题、建议或者补充可以留言在文章下方感谢大家的支持
http://www.sadfv.cn/news/141223/

相关文章:

  • 企业网站源码git电子商务网站建设期末试题08答案
  • 做网站需要提供什么资料宿州科技网站建设
  • 黄页网络的推广网站有哪些网做英文网站
  • 高唐做网站建设公司3d游戏制作软件
  • 网站建设维护去哪里学制作北京的名片
  • 南京专业网站制作哪家好汕头seo全网营销
  • 网站制作完成之后进入了什么阶段网络营销案例分析题及答案
  • 企业如何做好网站的seo优化响应式网站适合优化吗
  • 做的网站底部应该标注什么织梦cms怎么安装
  • 深圳网站网站建设杭州手机网站制作
  • 全国网站建设有实力wordpress pdf下载插件
  • 阿里巴巴免费做网站百度收录查询入口
  • 找人做jsp网站深圳建设交易网站
  • 用什么来网站开发好极简app制作器
  • 书香气的域名做网站邯郸建设局网站资质申报
  • 火车票网站建设工程咨询公司
  • 如何登录网站制作平台如室室内设计官网
  • 昆明建设厅官方网站永康电子商务网站建设公司
  • 大渡口集团网站建设网上做任务网站有哪些内容
  • ftp怎么连接网站空间台州商城网站建设
  • 哪些网站可以找到兼职做报表的wordpress调用访问次数
  • 哈尔滨企业网站河北网站备案注销
  • 陌陌网站开发成本湖南环达公路桥梁建设总公司网站
  • 做系统网站建设做cms网站
  • 网站备案查询不了吉林市城市建设档案馆官方网站
  • 静态网站怎么做优化2008 iis wordpress
  • appcms程序怎么做网站台州自助建站在线咨询
  • 营业执照查询系统沧州快速关键词排名优化
  • 做网站服务器需要自己提供吗物流网站建设流程图
  • 怎么优化推广自己的网站重庆推广网站排名公司