java 获取类里面的属性和函数方法,并运行类的函数方法

news/2024/11/28 21:50:16/

助手类,获取类里面的属性和函数

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;//TODO 获取类里面的属性和函数方法
public class ClassUtils {//TODO 获取类里面所有属性,包含继承的父类//TODO isGetParent 是否获取继承的父类,public static List<Field> getClassField(Class<?> classType,boolean isGetParent){
//        Class<?> classType = ExtendType.class;List<Field> list = new ArrayList<>();
//        JSONArray list = new JSONArray();// 使用getFields获取属性Field[] fields;if(isGetParent){fields = classType.getFields();list.addAll(Arrays.asList(fields));
//            for (Field f : fields)
//            {
//                list.add(f.getName());System.out.println(f);
//            }}//        System.out.println();// 使用getDeclaredFields获取属性fields = classType.getDeclaredFields();list.addAll(Arrays.asList(fields));
//        for (Field f : fields)
//        {
//            list.add(f.getName());System.out.println(f);
//        }return list;}//TODO 获取类的Method,包含继承的父类//TODO isGetParent 是否获取继承的父类,public static List<Method> getClassMethod(Class<?> classType,boolean isGetParent){
//        Class<?> classType = ExtendType.class;List<Method> list = new ArrayList<>();
//        JSONArray list = new JSONArray();// 使用getMethods获取函数Method[] methods;if(isGetParent) {methods = classType.getMethods();list.addAll(Arrays.asList(methods));
//            for (Method m : methods) {
//                list.add(m.getName());System.out.println(m);
//            }}//        System.out.println();// 使用getDeclaredMethods获取函数methods = classType.getDeclaredMethods();list.addAll(Arrays.asList(methods));
//        for (Method m : methods)
//        {
//            list.add(m.getName());System.out.println(m);
//        }return list;}}

 

执行java类里面的函数方法

public static void main(String[] args) throws Exception{//TODO 类的实例MessageDistributeController messageDistributeController = new MessageDistributeController();//TODO 获取类属性List<Field> fieldList = ClassUtils.getClassField(messageDistributeController.getClass(),true);System.out.println(Arrays.toString(fieldList.toArray()));//TODO 获取类的函数List<Method> methodList = ClassUtils.getClassMethod(messageDistributeController.getClass(),false);System.out.println(Arrays.toString(methodList.toArray()));//TODO 运行类里面的函数,示例一:循环类里面所有函数,匹配名称是否合适,使用   函数.invoke(类的实例);     执行该函数,例如:for(int i = 0;i < methodList.size();i ++){Method method = methodList.get(i);if(method.getName().startsWith("MessageDistribute")){
//                method.invoke(messageDistributeController, 在这里传入参数);  //TODO  有参数method.invoke(messageDistributeController); //TODO  无参数}}//TODO 运行类里面的函数(该函数必须是声明 public ),示例二:声明一个函数并指定函数名称,如果函数不存在,则报错//TODO 有参数Method method = messageDistributeController.getClass().getMethod("checkKey", String.class);Object invoke = method.invoke(messageDistributeController,"abc");System.out.println(invoke.getClass());//手动拆箱获取返回值boolean bool = ((Boolean) invoke).booleanValue();System.out.println(bool);//TODO 无参数
//        Method method = messageDistributeController.getClass().getMethod("MessageDistribute300");
//        Object invoke = method.invoke(messageDistributeController);
//        System.out.println(invoke);}


http://www.ppmy.cn/news/340036.html

相关文章

flutter自定义系列之简单的K线图绘制

上篇文章讲了flutter自定义的相关流程&#xff0c; 今天继续练习下flutter的自定义K线&#xff1a; 我们可以通过自定义Painter来实现一个简单的K线图界面&#xff1a; 创建一个自定义的Painter&#xff0c;用于绘制K线图&#xff1a; import dart:ui;import package:flutte…

华为OD机试真题 JavaScript 实现【勾股数元组】【2022Q4 100分】,附详细解题思路

一、题目描述 如果三个正整数A、B、C ,ABC则为勾股数 如果ABC之间两两互质&#xff0c;即A与B&#xff0c;A与C&#xff0c;B与C均互质没有公约数&#xff0c; 则称 其为勾股数元组。 请求出给定n~m范围内所有的勾股数元组。 二、输入描述 起始范围 1 < n < 10000 n &…

Mysql中explain的用法详解

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Python内存管理与垃圾回收深度解析

Python的内存管理和垃圾回收是一项基础但至关重要的技术。理解Python如何管理内存可以帮助我们写出更优化、更高效的代码&#xff0c;同时也可以帮助我们更好地理解Python运行时的一些行为。在本文中&#xff0c;我们将深入探讨Python的内存管理和垃圾回收机制。 一、Python的…

20230612 set1打卡

哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

人工智能体系和实战指南

前言 人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展&#xff0c;但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域&#xff0c;它研究计算机如何模拟或实现人类的学习行为&#xff0c;以获取新的知识或…

ios实现wifi搜索连接_苹果IOS设备常见无线连接问题

由于苹果设备良好的操作体验&#xff0c;越来越多的家庭用户开始购置IPAD、IPhone、IPod Touch等苹果&#xff0c;它们都具备一个共同点&#xff1a;支持Wi-Fi连接&#xff0c;这无疑为广大用户连接互联网的提供了最大的便利&#xff0c;但与此同时&#xff0c;越来越多的无线连…

苹果手机连到电脑后找不到服务器,iPhone手机热点明明打开了,可是电脑就是连不上怎么办?...

解决方法一&#xff1a; 很有可能是网络连接的问题&#xff0c;先关闭iPhone手机的热点&#xff0c;然后再重新打开&#xff0c;然后重启电脑&#xff0c;再重新进行连接尝试一下。 解决方法二&#xff1a; iPhone手机的热点打开了&#xff0c;但是电脑连不上&#xff0c;还有可…