松鼠乐园 松鼠乐园
  • 注册
  • 登录
  • 首页
  • 快捷入口
    • Vue
    • Tensorflow
    • Springboot
    • 语言类
      • CSS
      • ES5
      • ES6
      • Go
      • Java
      • Javascript
    • 工具类
      • Git
      • 工具推荐
    • 服务器&运维
      • Centos
      • Docker
      • Linux
      • Mac
      • MySQL
      • Nginx
      • Redis
      • Windows
    • 资源类
      • 论文
      • 书籍推荐
      • 后端资源
      • 前端资源
      • html网页模板
      • 代码
    • 性能优化
    • 测试
  • 重大新闻
  • 人工智能
  • 开源项目
  • Vue2.0从零开始
  • 广场
首页 › Java › 这是一份超全面详细的Java反射机制学习指南

这是一份超全面详细的Java反射机制学习指南

迦娜王
1年前Java
324 0 0

Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。很多千锋的学员在面试中都会被问到Java反射机制这个问题,为了帮助大家更好的掌握这个知识点,千锋武汉Java培训小编整理了一些资料分享给大家。

一、反射概念

在正式讲解反射之前,为了很好的去理解它我们先从一个案例说起。请看下面的代码:

这是一份超全面详细的Java反射机制学习指南

这是一个最简单不过的类,当我们使用的时候直接new出来一个User对象即可。因为这个类是我们自己定义的,所以在使用的时候我们知道User有两个字段name和age,还有无参和有参构造方法,另外的test方法我们也可以直接调用(因为其是public)。

现在出现一个问题,如果这个user类不是我们自己定义的,我们从外部看不到里面有什么东西,而且我们又想去知道内部长什么样,比如说有几个字段、方法、构造方法、共有还是私有的等等,这时候该怎么办呢?这时候java语言在设计的时候为我们提供了一个机制,就是反射机制,他能够很方便的去解决我们的问题。

二、深入分析java反射机制

1、获取Class类

在java中万事万物皆对象,User user=new User()一行代码我们知道了user是User类的实例对象,通过Student stu=new Student()我们知道了stu是Student的实例对象,但是我们想过没,User和Student又是谁的对象呢?没错就是Class类的实例对象。那这个Class类是什么东西,内部长什么样子呢?这时候我们很自然的联想到使用反射机制。使用反射机制就可以获取到这个class。

这里有三种方式可以获取这个Class,我们来看一下代码:

这是一份超全面详细的Java反射机制学习指南

上面的c1、c2、c3都是Class类的实例,表示的都是User类。

当然,不仅仅是User这些类,对于基本数据类型甚至是包括void我们也可以使用这个方法。

这是一份超全面详细的Java反射机制学习指南

现在就可以直接创建User类的实例了。

User user = (User)c1.getInstance();

现在我们对反射机制中获取Class类的方法进行一个总计

这是一份超全面详细的Java反射机制学习指南

2、获取类的方法

现在通过反射看一下User类内部的样子,打印一下(把这个操作封装在了一个方法中):

这是一份超全面详细的Java反射机制学习指南

下面我们把我们的User类传进去,打印一下。

这是一份超全面详细的Java反射机制学习指南

我们总结一下反射方法。

这是一份超全面详细的Java反射机制学习指南

3、获取类的属性

(1)获取所有属性

这是一份超全面详细的Java反射机制学习指南

上面有两种获取属性的方法。重点是for循环。我们来测试一下

这是一份超全面详细的Java反射机制学习指南

直接就会输出我们的字段类型和名称。

(2)获取指定属性

在这里我们的User类中name、age字段增加getter和setter方法

这是一份超全面详细的Java反射机制学习指南

然后我们测试一下

这是一份超全面详细的Java反射机制学习指南

在这里,我们在printFieldMsgBySelf方法中通过反射重新设置了age年龄的值,输出之后已成功更改。

这是一份超全面详细的Java反射机制学习指南

4、获取类的构造方法

这是一份超全面详细的Java反射机制学习指南

然后我们同样的测试一下

这是一份超全面详细的Java反射机制学习指南

跟我们之前的构造方法一样。

这是一份超全面详细的Java反射机制学习指南

5、获取User类的父类和接口

我们在这里定义一个Human类(里面什么也没有),然后定义一个UserInterface接口,让User继承它就好了。

这是一份超全面详细的Java反射机制学习指南

然后我们在Test中去测试一下就可以了,测试方法很简单,我们只需要调用这个方法就可以。

0
Java实现生产者消费者的三种方式
上一篇
Java虚拟机(JVM)整理,这12454个字,建议收藏
下一篇
评论 (0)

请登录以参与评论。

现在登录
聚合文章
在Gitee收获近 5k Star,更新后的Vue版RuoYi有哪些新变化?
2月前
vue3.x reactive、effect、computed、watch依赖关系及实现原理
2月前
Vue 3 新特性:在 Composition API 中使用 CSS Modules
2月前
新手必看的前端项目去中心化和模块化思想
2月前
标签
AI AI项目 css docker Drone Elaticsearch es5 es6 Geometry Go gru java Javascript jenkins lstm mysql mysql优化 mysql地理位置索引 mysql索引 mysql规范 mysql设计 mysql配置文件 mysql面试题 mysql高可用 nginx Redis redis性能 rnn SpringBoot Tensorflow tensorflow2.0 UI设计 vue vue3.0 vue原理 whistle ZooKeeper 开源项目 抓包工具 日志输出 机器学习 深度学习 神经网络 论文 面试题
相关文章
Java基础知识」超级详细的Java基础知识,你还记得多少
学习java最基本的27个知识点你会吗?
要精通Java,先研究它的执行原理
java干货大集合
松鼠乐园

资源整合,创造价值

小伙伴
墨魇博客 无同创意
目录
重大新闻 Centos CSS Docker ES5 ES6 Go Java Javascript Linux Mac MySQL Nginx Redis Springboot Tensorflow Vue Vue2.x从零开始 Windows 书籍推荐 人工智能 前端资源 后端资源 壁纸 开源项目 测试 论文
Copyright © 2018-2021 松鼠乐园. Designed by nicetheme. 浙ICP备15039601号-4
  • 重大新闻
  • Centos
  • CSS
  • Docker
  • ES5
  • ES6
  • Go
  • Java
  • Javascript
  • Linux
  • Mac
  • MySQL
  • Nginx
  • Redis
  • Springboot
  • Tensorflow
  • Vue
  • Vue2.x从零开始
  • Windows
  • 书籍推荐
  • 人工智能
  • 前端资源
  • 后端资源
  • 壁纸
  • 开源项目
  • 测试
  • 论文
热门搜索
  • jetson nano
  • vue
  • java
  • mysql
  • 人工智能
  • 人脸识别
迦娜王
坚持才有希望
1224 文章
33 评论
231 喜欢
  • 0
  • 0
  • Top