你所在的位置: 首页 > 正文

深入浅出的聊一聊Java反射机制

2019-09-05 点击:1400

前卫武汉2天前我想分享

Java反射说,在运行状态下,对于任何类,我们都可以知道这个类的哪些方法和属性。许多前锋学生将在面试中被问到Java反思机制。为了帮助大家更好地掌握这一知识点,前锋武汉Java培训小编已经汇编了一些信息,与大家分享。

一,反思的概念

在我们正式解释反思之前,我们需要从一个案例开始,以便更好地理解它。请参阅以下代码:

这是最简单的类,当我们使用它时,我们可以直接创建一个User对象。因为这个类是我们自己的定义,所以我们知道User有两个字段name和age,并且没有参数和参数构造函数。其他测试方法也可以直接调用(因为它是公共的)。

现在有一个问题。如果我们没有定义用户类,我们内部就看不到任何内容,我们想知道内部的内容,例如,有几个字段,方法,构造函数和公共字。还是私人等等。此时我该怎么办?这时,Java语言为我们提供了一种设计机制,这就是反射机制。他可以轻松解决我们的问题。

二,深入分析java反射机制

1,获取Class类

在java中,一切都是对象,User user=new User一行代码我们知道user是User类的实例对象,通过Student stu=new Student我们知道stu是Student的实例对象,但是我们想过它,用户和谁是学生的对象?没错,它是Class类的实例对象。什么是Class类,它内部是什么样的?这时我们自然会想到使用反射机制。可以使用反射机制获得该类。

有三种方法可以获得这个类,让我们来看看代码:

上面的c1,c2,c3是Class类的示例,它们表示User类。

当然,不仅是User类,我们还可以将此方法用于基本数据类型甚至无效。

现在,您可以直接创建User类的实例。

用户user=(用户)c1.getInstance;

现在让我们总结一下在反射机制中获取Class类的方法

2,获得班级的方法

现在通过反射查看User类的内部并打印它(将此操作封装在方法中):

下面我们传递User类并打印它。

让我们总结一下反思方法。

3,获取类的属性

(1)获取所有属性

获取属性有两种方法。重点是for循环。我们来试试吧

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

(2)获取指定的属性

在这里,我们将getter和setter方法添加到User类

中的name和age字段中

那我们来试试吧

在这里,我们通过printFieldMsgBySelf方法中的反射重置年龄值,并且已成功更改输出。

4,采集类的构建方法

然后我们测试相同的

与我们之前的构造函数相同。

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

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

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

在上面的例子中,我们使用反射机制来获取类的方法,字段,构造函数,父类和接口。当然,我们可以获得一些其他信息。我不知道你是否掌握了Java反射机制的知识。如果您想了解更多关于Java行业动态和学习资料的信息,可以关注“武汉前锋”微信公众号。

收集报告投诉

Java反射说,在运行状态下,对于任何类,我们都可以知道这个类的哪些方法和属性。许多前锋学生将在面试中被问到Java反思机制。为了帮助大家更好地掌握这一知识点,前锋武汉Java培训小编已经汇编了一些信息,与大家分享。

一,反思的概念

在我们正式解释反思之前,我们需要从一个案例开始,以便更好地理解它。请参阅以下代码:

这是最简单的类,当我们使用它时,我们可以直接创建一个User对象。因为这个类是我们自己的定义,所以我们知道User有两个字段name和age,并且没有参数和参数构造函数。其他测试方法也可以直接调用(因为它是公共的)。

现在有一个问题。如果我们没有定义用户类,我们内部就看不到任何内容,我们想知道内部的内容,例如,有几个字段,方法,构造函数和公共字。还是私人等等。此时我该怎么办?这时,Java语言为我们提供了一种设计机制,这就是反射机制。他可以轻松解决我们的问题。

二,深入分析java反射机制

1,获取Class类

一切都是java中的一个对象。 User user=new User的行知道user是User类的实例对象。通过Student stu=new Student,我们知道stu是Student的实例对象。但我们有没有想过谁是用户和学生的对象?那是Class类的实例对象。那么这个Class类是什么,它内部是什么样的?在这一点上,我们自然地联系了反射机制的使用。可以使用反射机制获得该类。

获得此课程有三种方法。我们来看看代码:

上面的c1,c2和C3都是Class类的实例,代表所有User类。

当然,它不仅仅是User类,而且我们也可以将此方法用于基本数据类型甚至空洞。

现在,您可以直接创建User类的实例。

用户user=(用户)c1。的getInstance;

现在让我们总结一下在反射机制中获取Class类的方法。

2.获取类的方法

现在通过反射查看User类,并将其打印出来(将操作封装在方法中):____________

现在让我们传入我们的User类并将其打印出来。

让我们总结一下反思方法。

3.获取类的属性

(1)获取所有属性

获取属性有两种方法。重点是for循环。我们来试试吧

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

(2)获取指定的属性

在这里,我们将getter和setter方法添加到User类

中的name和age字段中

那我们来试试吧

在这里,我们通过printFieldMsgBySelf方法中的反射重置年龄值,并且已成功更改输出。

4,采集类的构建方法

然后我们测试相同的

与我们之前的构造函数相同。

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

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

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

在上面的例子中,我们使用反射机制来获取类的方法,字段,构造函数,父类和接口。当然,我们可以获得一些其他信息。我不知道你是否掌握了Java反射机制的知识。如果您想了解更多关于Java行业动态和学习资料的信息,可以关注“武汉前锋”微信公众号。

http://www.sugys.com/bds4

亚心网 版权所有© www.xatst.com 技术支持:亚心网 | 网站地图