前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java学习笔记(基础篇)—反射

java学习笔记(基础篇)—反射

作者头像
chlinlearn
发布于 2019-07-27 10:27:04
发布于 2019-07-27 10:27:04
46010
代码可运行
举报
文章被收录于专栏:java老实人java老实人
运行总次数:0
代码可运行

一、 反射 :自描述或者自定义

一个类或者对象通过反射可以获得自身的对象,该对象是一个java.lang.Class 的对象(就像一个镜像文件)。一个对象或者类获得自身的Class对象的过程称为反射。 java.lang.Class:是类镜像,镜像对象Class类镜像的作用可以获取该类和该对象的所有属性,方法和构造器,以及属性方法和构造器修饰符,修改私有属性的值。调用方法和调用构造器等等。 Class----实例化----->class-----实例化----->对象 对象------抽象化----->class------抽象化----->Class 抽象:具有相同属性和行为抽象出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public final class Class{
      Field[] fileds;
      Method[] methods;
      Constructor[] cons;
}
反射API:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java.lang.Class
java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Array
java.lang.reflect.Constructor

class Person{} Person创建100个对象,创建多少个Person的Class类型对象?

1个,类加载的时候创建Person的Class类型对象。

通过反射操作的步骤:

1)获取类镜像(Class对象),三种方式 a)Class.forName(String className) b)数据类型.class c)对象.getClass() 2)通过类镜像实例化对象(不通过new方式创建对象)

Object obj=类镜像对象.newInstance()。

​ 默认会调用class类的无参构造器。

3)通过实例化对象操作属性,方法,构造器 a)获取所有的属性(属性名和修饰符和数据类型)。 b)获取所有的方法(方法名和修饰符和返回值和参数列表) c)获取所有构造器(名字和修饰符和参数列表) d)修饰属性的值 e)调用方法:invoke() f)调用指定构造器创建的对象

什么时候用反射:

1)在运行的时候才知道类名 2)在运行的时候才知道属性名 3)在运行的时候才知道方法名

反射:

​ 1) 确定一个对象的class ​ 2) 可以获得一个类的修饰符、字段、方法、构造器和父类。 ​ 3) 获得接口声明的常量和方法。 ​ 4) 创建Class的实例,直到运行时才获得。 ​ 5) 运行前即使字段名字不知道,可以到程序运行时获得和修改这些字段的值。 ​ 6) 运行前即使对象的方法名不知道,可以到程序运行时触发调用该方法。 ​ 7) 运行前创建了一个大小和元素都未知的新数组, ​ 可以到运行时修改数组的元素。

反射的用途:

1)修改私有属性的值 2)调用任何对象的任何方法 3)不通过new方式创建对象

反射用途的注意:

1)反射可以让我们利用这个Class对象来获取和修改私有的变量和方法,不通过共有的方法去获得(原来我们例子都是通过一个public的方法来设置和获取私有的变 量),可以破坏数据的封装性。 2)反射机制通过在运行时探查字段和方法,从而可以帮助写出通用性很好的程序,这项能力对系统编程来说特别有用,但它并不适合于应用编程。而且,反射是脆弱的——编译不能帮助你发现编译错误,任何错误在运行时被发现并且都会导致异常。导致代码不安全。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
感谢博主分享,超详细教程。
感谢博主分享,超详细教程。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
上一期,我们实战讲解了使用 KubeKey v3.0.10 自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/08/25
3680
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
首先声明,我不是标题党,本文初始目标是要体验用 KubeKey v3.0.9 部署最新版的 KubeSphere v3.4.0 和 Kubernetes v1.27,无奈部署过程中发现了自认为的 Bug,进行不下去了,不得不改换 Kubernetes v1.26。
运维有术
2023/07/29
1.7K1
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
KubeKey 从 v2.1.0 版开始新增了清单 (manifest) 和制品 (artifact) 的概念,为用户离线部署 KubeSphere 和 Kubernetes 集群提供了一种简单便捷的解决方案。
运维有术
2023/12/13
2.1K0
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
本文是 openEuler 22.03 LTS SP2 基于 KubeKey 扩容 Kubernetes Worker 节点实战一文的更新版。
运维有术
2023/07/20
4040
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 openEuler 22.03 LTS SP2 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/10/18
8220
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 基于 KubeSphere 安装 k8s v1.24 实战入门
本文是 openEuler 22.03 LTS SP2 基于 KubeSphere 安装 Kubernetes 的更新版。
运维有术
2023/07/18
8650
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 基于 KubeSphere 安装 k8s v1.24 实战入门
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 安装 KubeSphere 实战入门
基于 KubeSphere 玩转 K8s 第二季系列文档,基于开源国产化操作系统 openEuler 全新打造,也算是在推进国产化浪潮、CentOS搞事情不能用等综合原因下的一种新的尝试。
运维有术
2023/07/16
9230
KubeKey 升级 Kubernetes 次要版本实战指南
上一期我们完成了 KubeSphere 和 Kubernetes 补丁版本升级实战 , 本期我们实战如何利用 KubeKey 实现 Kubernetes 次要版本升级。
运维有术
2023/12/06
4400
KubeKey 升级 Kubernetes 次要版本实战指南
基于 KubeSphere 玩转 k8s 第二季|KubeKey 扩容 Kubernetes Worker 节点实战
上一期,我们实战讲解了使用 KubeSphere 开发的 KubeKey 工具自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/07/16
5630
KubeKey 升级 KubeSphere 和 Kubernetes 补丁版本实战指南
KubeSphere v3.4.1 已于 2023 年 11 月 10 日正式发布,升级说明详见 Releases-v3.4.1 发布说明。该发布版修复了 v3.4.0 中存在的许多问题,建议所有人更新。
运维有术
2023/12/05
5480
KubeKey 升级 KubeSphere 和 Kubernetes 补丁版本实战指南
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 麒麟 V10 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/11/09
1.4K1
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
近期,KubeSphere 社区的讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题。 尽管用户尝试通过设置 KKZONE=cn 来解决,但部署 KubeSphere 时仍面临失败的情况。
运维有术
2024/07/29
8990
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
在近期的技术分享中,我们实战讨论了Kubernetes 集群 Worker 节点的扩容。文章发布后,我收到了社区成员的反馈,询问控制节点的扩容是否可行。我的回答是:绝对可以。
运维有术
2024/07/20
1610
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。
运维有术
2024/07/29
4430
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
近期,KubeSphere 群里讨论中频繁出现关于 Docker 官方镜像仓库访问受限的问题。 尽管用户尝试通过设置 KKZONE=cn 来解决,但部署 KubeSphere 时仍面临失败的情况。
运维有术
2024/07/18
4150
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南(2)
本文是 ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南 的续集,受限于字符数量限制,无奈只能将完整的文档拆成了两篇。
运维有术
2023/10/19
9140
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南(2)
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey 扩容 Kubernetes Worker 节点实战指南。
运维有术
2024/07/16
3961
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。
运维有术
2024/07/19
4810
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey 部署 Kubernetes v1.28.8 实战。
运维有术
2024/04/25
6510
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
1.1K2
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
推荐阅读
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
3680
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
1.7K1
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
2.1K0
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
4040
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
8220
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 基于 KubeSphere 安装 k8s v1.24 实战入门
8650
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 安装 KubeSphere 实战入门
9230
KubeKey 升级 Kubernetes 次要版本实战指南
4400
基于 KubeSphere 玩转 k8s 第二季|KubeKey 扩容 Kubernetes Worker 节点实战
5630
KubeKey 升级 KubeSphere 和 Kubernetes 补丁版本实战指南
5480
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
1.4K1
KubeSphere 最佳实战:征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
8990
KubeSphere 最佳实战:KubeKey 助力 Kubernetes 扩容控制节点实战指南
1610
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
4430
KubeSphere 最佳实战:征服 Docker 镜像访问限制:KubeSphere v3.4.1 成功部署全攻略
4150
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南(2)
9140
KubeSphere 最佳实战:KubeKey 扩容 Kubernetes Worker 节点实战指南
3961
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
4810
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
6510
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
1.1K2
相关推荐
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档