美文网首页
25、反射(一)

25、反射(一)

作者: 爱学习的代代 | 来源:发表于2021-04-09 08:43 被阅读0次

上面学习了Class类,反射主要是用来获取到类的属性和方法。

几点说明:

  1. 另外一种获取class的方法: 类名.class
        Class clazz = MerchandiseV2.class;

  1. 通过filed获取实例的属性值: countField.get(v) , v代表的是实例化的对象。
        MerchandiseV2 v = new MerchandiseV2(1,"床单",100, 50, 30);
        Field countField = clazz.getField("count");
        System.out.println("通过反射获取一个实例count的值:" + countField.get(v));


  1. 通过field来修改成员变量的值:countField.set(v, 150); v代表是实例化的对象,150代表要传入的值。

  2. 通过filed获取所有的成员变量: clazz.getFields()

实例代码如下:

package day14;

import java.lang.reflect.Field;

public class TestReflect {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        MerchandiseV2 v = new MerchandiseV2(1,"床单",100, 50, 30);


//      另一种获取Class类的方法:
        Class clazz = MerchandiseV2.class;

//      Alt + Enter 解决报错问题
        Field countField = clazz.getField("count");
//      通过反射获取一个实例count的值。

        System.out.println("通过反射获取一个实例count的值:" + countField.get(v));

//      通过反射设置一个实例的成员变量

        countField.set(v, 150);
//      查看设置的成员变量是否发生了变化:
        System.out.println(countField.get(v));
        System.out.println(v.count);




//     class的getFileds方法:获取类的所有的属性。

        Field[] fields = clazz.getFields();
        System.out.println("输出所有的成员变量:");
        for (Field field : fields) {
            System.out.println(field);
        }

    }
}



运行结果:


image.png

附MerchandiseV2的成员变量:


image.png

疑问:

  1. 感觉不好理解,如果要获取的话,怎么不直接使用get、set方法呢?
  2. 观察输出结果,发现仅输出了count,count属性是设置成public才可以获取到的,那么私有属性如何获取呢?

相关文章

  • 25、反射(一)

    上面学习了Class类,反射主要是用来获取到类的属性和方法。 几点说明: 另外一种获取class的方法: 类名.c...

  • 我的11月3日作业

    (交晚了,只能的一半的分数了) 今天尝试:15分钟讲课+25分钟学生活动 教学目标:反射作图、镜面反射漫反射 课堂...

  • 反射机制(一)认识反射

    一、引出反射机制 在引出反射机制之前我们先思考两个问题:问题一我们知道对象有编译类型和运行类型Object obj...

  • Day25-9~11 反射

    在python中,一切皆对象。 反射常用以下函数: 1、getattr(o,name) o:对象名;name:对...

  • javase part25 - 反射机制

    反射概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应...

  • Java学习25:反射机制、注解

    反射 反射机制有什么用?通过java语言中的反射机制可以操作字节码文件。有点类似于黑客。(可以读和修改字节码文件)...

  • 反射三定律

    反射第一定律:反射可以将interface类型变量转换成反射对象 反射第二定律:反射可以将反射对象还原成inter...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java中的反射|SquirrelNote

    前言 本篇简介: 反射概述 反射具体功能实现 Android中的反射应用 一、反射(Reflection)概述 1...

  • 镜面反射矩阵的推导

    镜面反射是以镜面作为反射平面,实物与反射物到反射平面的距离相等,实物与反射物方向相反,所以,反射矩阵由反射平面确定...

网友评论

      本文标题:25、反射(一)

      本文链接:https://www.haomeiwen.com/subject/pyzbkltx.html