首页 > 编程语言 >**java反射与方法**

**java反射与方法**

时间:2024-05-31 09:02:14浏览次数:24  
标签:反射 java System println 方法 method out

问题导入

假如要调用一个类的所有方法,而这个类有1000个方法,该怎么办???

解决方案:1.类名.方法名(太麻烦了) 2.使用java中的反射机制(推荐使用getDeclaredMethod()方法)

一、反射机制概念

在 java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法,并 且对于任意一个对象,都能够调用它的任意一个方法:这种动态获取信息以及动态调用对象方法的功 能成为 Java 语言的反射机制

二、java反射与方法

像字段一样,我们可以使用Method类提供的各种方法来检查类的不同方法。

  • getMethods() - 返回该类及其超类的所有公共方法

  • getDeclaredMethod() - 返回该类的所有方法

  • getName() - 返回方法的名称

  • getModifiers() - 以整数形式返回方法的访问修饰符

  • getReturnType() - 返回方法的返回类型

三、方法反射代码演示

具体代码:

Dog实体类

package com.zpark.dao;
​
/**
 * @author YS
 * @version 1.0
 * @Date 2024/5/29 22:30
 */
public class Dog {
    public void display() {
        System.out.println("我是一只小狗");
    }
​
    public void eat() {
        System.out.println("吃骨头");
    }
​
    public void makeSound() {
        System.out.println("汪汪汪~");
    }
}
​

RefectTest测试类

package com.zpark.test;
​
​
import com.zpark.dao.Dog;
​
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
​
/**
 * @author YS
 * @version 1.0
 * @Date 2024/5/29 22:32
 */
public class ReflectTest {
    public static void main(String[] args) {
        try {
            //      创建对象
            Dog dog = new Dog();
            //     创建class对象
            Class<? extends Dog> aClass = dog.getClass();
            //     getDeclaredMethods() - 返回该类的所有方法
            Method[] methods2 = aClass.getDeclaredMethods();
            for (Method method : methods2) {
                // 调用里面的方法
                method.invoke(dog);
                // 获取方法的名称
                System.out.println("方法名称: " + method.getName());
​
                //获取方法的访问修饰符
                int modifier = method.getModifiers();
                System.out.println("修饰符: " + Modifier.toString(modifier));
​
                //获取方法的返回类型
                System.out.println("返回方法的类型: " + method.getReturnType());
                System.out.println(" ");        }
​
            //     getMethods() - 返回该类及其超类的所有公共方法
            Method[] methods = aClass.getMethods();
            for (Method method : methods) {
                // 获取方法的名称
                System.out.println("方法名称: " + method.getName());
​
                //获取方法的访问修饰符
                int modifier = method.getModifiers();
                System.out.println("修饰符: " + Modifier.toString(modifier));
​
                //获取方法的返回类型
                System.out.println("返回方法的类型: " + method.getReturnType());
                System.out.println(" ");        }
        }catch (Exception e){
            System.out.println(e.toString());
        }
​
    }
​
}

四、拓展

动态创建对象、动态访问和修改字段、动态处理注解....

标签:反射,java,System,println,方法,method,out
From: https://blog.csdn.net/weixin_67577387/article/details/139339529

相关文章

  • 【源码】Spring Data JPA原理解析之Repository自定义方法命名规则执行原理(二)
     SpringDataJPA系列1、SpringBoot集成JPA及基本使用2、SpringDataJPACriteria查询、部分字段查询3、SpringDataJPA数据批量插入、批量更新真的用对了吗4、SpringDataJPA的一对一、LazyInitializationException异常、一对多、多对多操作5、SpringDataJPA自定义......
  • 使用Java实现线性回归算法
    线性回归算法原理线性回归的基本思想是通过一条直线来拟合数据点,使得数据点到这条直线的距离平方和最小。其数学表达式为:y=β......
  • 软考高级架构师/分析师论文【论基于架构的软件设计方法/ABSD】
    一、摘要  2020年4月,某互联网公司开始了基础架构管理平台项目的实施,该项目主要为基础架构团队提供基础设施、中间件、负载均衡、任务管理等功能,我作为该项目的架构师,主要负责架构设计、架构评估等工作。本文以该项目为例,主要论述基于架构的软件设计方法在该项目中的具体......
  • hashtable的常用方法
    哈希表的定义和查找方法就不再赘述,此随笔主要写代码中的用法加深自己印象。声明哈希表:#include<unordered_map>unordered_map<eleType_1,eleType_2>var_name;unordered_map<int,int>map;//或者之前用过的charint类型,char为key,int为char的值。后面的变量为两个unordered......
  • Vue前端的搭建(与后端JavaEE的连接)
    目录前端平台搭建(Vue2.6,App:HBulderX)创建Vue2.6项目下载相应插件方便开发路由配置对连接后端进行一些配置(main.js文件)导入ElementUI组件组件|Element同步与异步axios异步请求框架前端平台搭建(Vue2.6,App:HBulderX)创建Vue2.6项目如图,创完之后的样子下载相应插件方......
  • JAVA开发 利用代码生成奖状pdf-中文版
    利用代码生成奖状pdf-中文版1、图片模板2、实现代码3、生成模板(pdf文件截取)1、图片模板2、实现代码importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.pdmodel.PDPage;importorg.apache.pdfbox.pdmodel.PDPageContentStream;importorg......
  • 【Java】类和对象
    类和类的实例化类就是一类对象的统称。对象就是这一类具体化的一个实例。声明一个类就是创建一个新的数据类型,而类在Java中属于引用类型,Java使用关键字class来声明类。我们来看以下简单的声明一个类。基本语法:class<class_name>{ ......
  • Java-IO-IO模型
    参考:UNIX下的五种IO模型10分钟看懂,JavaNIO底层原理Linux五种网络IO模式(阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO)1.什么是IO根据冯.诺依曼结构,计算机结构分为5大部分:运算器、控制器、存储器、输入设备、输出设备。操作系统为了保证稳定性和安全性,一个进......
  • 什么是状态机,用简单的java示例说明状态机的概念
    1.什么是状态机状态机(StateMachine)是一种抽象的计算模型,用于描述一个系统在不同状态之间的转换以及触发这些转换的事件。它由状态、事件、动作和转换规则组成。状态代表系统在某个时刻的行为模式;事件是引起状态转换的外部或内部信号;动作是在状态转换时执行的操作;转换规则定义......
  • 在javascript中定义三个状态机
    //定义基础状态机类classBaseStateMachine{constructor(initialState){this.currentState=initialState;}//转换状态的方法,子类需要根据实际逻辑重写此方法transition(event){thrownewError("transitionmethodmustbeimp......