Java 第23章 反射 本章作业

文章目录

  • 反射修改私有成员变量
  • 反射和File

反射修改私有成员变量

在这里插入图片描述

public class Homework01 {public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchFieldException, NoSuchMethodException, InvocationTargetException {/*** 定义PrivateTest类,有私有name属性,并且属性值为hellokitty* 提供getName的公有方法* 创建PrivateTest的类,利用Class类得到私有的name属性,修改私有的name属性值,并调用getName()的方法打印name属性值*///1. 得到 PrivateTest类对应的Class对象Class<PrivateTest> privateTestClass = PrivateTest.class;//2. 创建对象实例PrivateTest privateTestObj = privateTestClass.newInstance();//3. 得到name属性对象Field name = privateTestClass.getDeclaredField("name");//name属性是private//4. 暴破namename.setAccessible(true);name.set(privateTestObj, "天龙八部");//5. 得到getName方法对象Method getName = privateTestClass.getMethod("getName");//6. 因为getName() 是public,所有直接调用Object invoke = getName.invoke(privateTestObj);System.out.println("name属性值=" + invoke);//天龙八部}
}class PrivateTest {private String name = "hellokitty";//默认无参构造器public String getName() {return name;}
}

反射和File

在这里插入图片描述

public class Homework02 {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {/*** 利用Class类的forName方法得到File类的class 对象* 在控制台打印File类的所有构造器* 通过newInstance的方法创建File对象,并创建E:\mynew.txt文件*///1. Class类的forName方法得到File类的class 对象Class<?> fileCls = Class.forName("java.io.File");//2. 得到所有的构造器Constructor<?>[] declaredConstructors = fileCls.getDeclaredConstructors();//遍历输出for (Constructor<?> declaredConstructor : declaredConstructors) {System.out.println("File构造器=" + declaredConstructor);}//3. 指定的得到 public java.io.File(java.lang.String)Constructor<?> declaredConstructor = fileCls.getDeclaredConstructor(String.class);String fileAllPath = "e:\\mynew.txt";Object file = declaredConstructor.newInstance(fileAllPath);//创建File对象//4. 得到createNewFile 的方法对象Method createNewFile = fileCls.getMethod("createNewFile");createNewFile.invoke(file);//创建文件,调用的是 createNewFile//file的运行类型就是FileSystem.out.println(file.getClass());System.out.println("创建文件成功" + fileAllPath);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317702.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Large Language Models Paper 分享

论文1&#xff1a; ChatGPTs One-year Anniversary: Are Open-Source Large Language Models Catching up? 简介 2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这一事件在AI社区甚至全世界引起了轰动。首次&#xff0c;一个基于应用的AI聊天机器人能够提供有帮助、…

Docker 入门 ------容器互通以及Dockerfile

1. 端口映射以及容器互联 Docker 除了通过网络访问&#xff0c;还提供了两种很方便的功能来满足服务访问的基本需求&#xff1a; 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…

【elfboard linux开发板】4. 文件点灯与创建多进程

ps&#xff1a;提升效率的小tips&#xff1a; 灵活运用vim操作命令&#xff0c;gg快速跳转到文件开头&#xff0c;G跳转到结尾 多行操作 ctrl V shift i 插入修改内容 esc退出编辑 sudo vi /etc/vim/vimrc 在文件中添加如下内容省略重复工作&#xff1a; autocmd BufNewFile …

分布式(8)

目录 36.什么是TCC&#xff1f; 37.分布式系统中常用的缓存方案有哪些&#xff1f; 38.分布式系统缓存的更新模式&#xff1f; 39.分布式缓存的淘汰策略&#xff1f; 40.Java中定时任务有哪些&#xff1f;如何演化的&#xff1f; 36.什么是TCC&#xff1f; TCC&#xff08…

数据库云平台新数科技完成B轮融资,打造全链路智能化数据库云平台

数据库云平台软件厂商「北京新数科技有限公司」&#xff08;以下简称「新数科技」&#xff09;已于2023年完成B1轮和B2轮融资&#xff0c;分别由渤海创富和彬复资本投资&#xff1b;义柏资本担任本轮融资独家财务顾问。 新数科技成立于2014年&#xff0c;当前产品矩阵包括数据库…

使用宝塔在Linux面板搭建网站,并实现公网远程访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程 课程地址&#xff1a;模型预测控制&#xff08;2022春&#xff09;lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC&#xff08;…

Linux进程以及计划任务

一.程序和进程以及线程 内核功用&#xff1a;进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 对于所有的操作系统&#xff0c;都有基本的功能 1.程序 保存在硬盘、光盘等介质中的可执行代码和数据&#xff08;硬盘上躺着&#xff09; 静态保存的代码 执行…

x-cmd-pkg | JavaScript 运行时环境:node

目录 介绍首次用户技术特点竞品进一步阅读 介绍 Node.js 是一个开源、跨平台、异步事件驱动&#xff0c;基于 V8 引擎的 JavaScript 运行时环境&#xff0c;于 2009 年由 Ryan Dahl 创造&#xff0c;目的是为了实现高性能的网络应用开发。 性能表现良好&#xff1a;使用事件驱…

CMake入门教程【核心篇】宏模板(macro)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本文的内容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1. 定义宏1.1 基本语…

图像分割-漫水填充法 floodFill

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割-漫水填充法 floodFill (C#&#xff09;-CSDN博客 FloodFill方法是一种图像处理算法&#…

微服务注册到Zookeeper注册中心

jar包&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency>启动类上面加入&#xff1a;EnableDiscoveryClient注解 application.ym…