美文网首页java学习
Java中的反射-实现方法调用和获取字段名称

Java中的反射-实现方法调用和获取字段名称

作者: Mrhy1996 | 来源:发表于2020-06-06 22:02 被阅读0次

概念

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

反射中常用的方法

参考https://www.jianshu.com/p/9be58ee20dee

案例实战

首先创建一个实体类

package com.mrhy.springaopbean.model;
import lombok.Data;
@Data
public class TestExcelModel {
    private String cityName;
    private String countyName;
}

再封装一层

import lombok.Data;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

@Data
public class TestExcelModelList {
    private List<TestExcelModel> testList;
    private List<TestExcelModel> excelList;
}

案例demo

 public static void main(String[] args) throws Exception {
        TestExcelModel testExcelModel = new TestExcelModel();
        testExcelModel.setCityName("山东");
        testExcelModel.setCountyName("济南");
        TestExcelModelList testExcelModelList = new TestExcelModelList();
        List<TestExcelModel> list = new ArrayList<>();
        list.add(testExcelModel);
        testExcelModelList.setExcelList(list);
        testExcelModelList.setTestList(list);
//        获取testExcelModelList的类
        Class clazz = testExcelModelList.getClass();
        for (Field field : clazz.getDeclaredFields()) {
//           为了 让field.get(testExcelModelList)的时候不抛出异常,所以setAccessible为true
            field.setAccessible(true);
//            获取属性的名称
            String name = field.getName();
//            invoke 读取实体类的get方法
            String methodName = "get" + name.substring(0, 1).toUpperCase() + name.substring(1);
            Method method = clazz.getMethod(methodName);
            Object object = method.invoke(testExcelModelList);
            System.out.println("属性名字为:"+name);
            System.out.println("方法名为:"+methodName);
            System.out.println("该方法的返回结果为:"+object);
        }
    }

打印结果

属性名字为:testList
方法名为:getTestList
该方法的返回结果为:[TestExcelModel(cityName=山东, countyName=济南)]
-----------------
属性名字为:excelList
方法名为:getExcelList
该方法的返回结果为:[TestExcelModel(cityName=山东, countyName=济南)]
-----------------

收工,学无止境,记录一下

相关文章

  • 【Java 进阶】Java 反射

    反射:获取Class中所有字段(Field)与方法(Method),并实现调用(invoke) Java 反射简单...

  • Java中的反射-实现方法调用和获取字段名称

    概念 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个...

  • Java反射

    介绍 在运行状态中动态获取和调用对象方法的方式被称为反射。java.lang.Class是反射能够实现的基础,每一...

  • Java 反射

    Java反射Java反射API获取Class对象通过反射创建实例对象,调用公共方法通过反射调用私有方法 一.Jav...

  • Java基础之反射

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

  • Java反射理解(五)-- 方法反射的基本操作

    Java反射理解(五)-- 方法反射的基本操作 方法的反射 1. 如何获取某个方法 方法的名称和方法的参数列表才能...

  • Android ndk 中c 调用Java

    c调用java 中的方法 c代码中通过反射得到java 对象 1.新建Java类 2新建C文件 获取Java方法的...

  • 【日拱一卒】:反射的作用和意义?

    Java的反射:在程序运行过程中,动态的获取类的信息和动态调用对象的方法。反射就是把java类中的各种成分映射成一...

  • java反射机制

    java反射机制是为了动态获取类的结构,动态地调用对象的方法 java反射机制 获取类Class对象 A.clas...

  • java反射和动态代理

    java反射 反射是程序运行时,通过反射直接操作对象或者类。获取类声明的属性和方法,调用方法或者构造对象,设置修改...

网友评论

    本文标题:Java中的反射-实现方法调用和获取字段名称

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