专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 赢咖4注册 Java实战项目在线培训课程之Java反射机制

Java实战项目在线培训课程之Java反射机制

更新时间:2020-07-31 15:16:36 来源:赢咖4 浏览1679次

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

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实战项目在线培训课程之Java反射机制

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

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

Java实战项目在线培训课程之Java反射机制

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

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

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

Java实战项目在线培训课程之Java反射机制

2、获取类的方法

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

Java实战项目在线培训课程之Java反射机制

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

Java实战项目在线培训课程之Java反射机制

我们总结一下反射方法。

Java实战项目在线培训课程之Java反射机制

3、获取类的属性

(1)获取所有属性

Java实战项目在线培训课程之Java反射机制

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

Java实战项目在线培训课程之Java反射机制

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

(2)获取指定属性

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

Java实战项目在线培训课程之Java反射机制

然后我们测试一下

Java实战项目在线培训课程之Java反射机制

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

Java实战项目在线培训课程之Java反射机制

4、获取类的构造方法

Java实战项目在线培训课程之Java反射机制

然后我们同样的测试一下

Java实战项目在线培训课程之Java反射机制

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

Java实战项目在线培训课程之Java反射机制

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

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

Java实战项目在线培训课程之Java反射机制

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

以上就是赢咖4java培训机构的小编针对“Java实战项目在线培训课程之Java反射机制”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>