org.aspectj.lang.ProceedingJoinPoint获取返回类型、参数名称/值等

2023-10-31

1、参数值

Object[] args = joinPoint.getArgs();

 2、参数名称

Signature signature = joinPoint.getSignature();
if (signature instanceof MethodSignature) {
    MethodSignature methodSignature = (MethodSignature) signature;
    String[] properties = methodSignature.getParameterNames();
}

3、返回类型

​
Signature signature = joinPoint.getSignature();
if (signature instanceof MethodSignature) {
    MethodSignature methodSignature = (MethodSignature) signature;
    // 被切的方法
    Method method = methodSignature.getMethod();
    // 返回类型
    Class<?> methodReturnType = method.getReturnType();
    // 实例化
    Object o = methodReturnType.newInstance();
}


​

4、全限定类名

Signature signature = joinPoint.getSignature();
signature.getDeclaringTypeName()

5、方法名

Signature signature = joinPoint.getSignature();
signature.getName()

工具类方法

/**
 * 获取方法和参数内容
 *
 * @param className 类名 非必填
 * @param mothodName 方法名 必填
 * @param properties 参数名称列表
 * @param agrs 参数列表
 * @return
 */
public static String getMothodPropertion(String className, String mothodName, String[] properties, Object ... agrs) {
    StringBuilder sb = new StringBuilder();
    if(null != className) {
        sb.append("类名:[").append(className).append("],");
    }
    sb.append("方法:[").append(mothodName).append("]");
    if (null == agrs) {
        return sb.toString();
    }
    boolean flag = null != properties;
    int propertiesLength = properties.length;
    Object obj;
    for(int i = 0, length = agrs.length; i < length; i++) {
        obj = agrs[i];
        sb.append("\r\n参数索引:[").append(i).append("],");
        if (flag && i < propertiesLength) {
            sb.append("参数名称:[").append(properties[i]).append("],");
        }
        if(null == obj) {
            sb.append("为null");
            continue;
        }
        sb.append("类型:[").append(obj.getClass().getName()).append("],");
        if(obj instanceof Collection) {
            Collection collection = (Collection)obj;
            sb.append("长度:[").append(collection.size()).append("],内容:[").append(collection);
        } else if(obj instanceof Map) {
            Map map = (Map)obj;
            sb.append("长度:[").append(map.size()).append("],内容:[").append(map);
        } else if(obj instanceof Object[]) {
            Object[] objects = (Object[])obj;
            sb.append("长度:[").append(objects.length).append("],内容:[").append(Arrays.asList(objects));
        } else if(obj instanceof String) {
            sb.append("内容:[").append(obj);
        } else {
            sb.append("内容:[").append(String.valueOf(obj));
        }
        sb.append("]");
    }
    return sb.toString();
}

效果如下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.aspectj.lang.ProceedingJoinPoint获取返回类型、参数名称/值等 的相关文章

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • 序列的排列?

    我有具体数量的数字 现在我想以某种方式显示这个序列的所有可能的排列 例如 如果数字数量为3 我想显示 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 2 0 2 0 0 2 1 0 2 2 1 0 0 1 0 1 1 0
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 程序设计笔记

    程序设计笔记 基础知识2020 12 7 程序设计实验须知 参考书目 计算机解决问题的步骤 代码结构 程序运行过程 基础知识 程序设计实验须知 实验前必须做好实验预习 参考书目 谭浩强C语言系列 1 C语言程序设计教程 第3版 2 C语言题
  • C#调用C++dll,C++中void*与C#类型的对应关系

    IntPtr input Marshal AllocHGlobal 100 IntPtr output Marshal AllocHGlobal 100 C 对应的int misposTrans void input void output
  • Spring Boot application.properties或application.yml相关配置

    COMMON SPRING BOOT PROPERTIES This sample file is provided as a guideline Do NOT copy it in its entirety to your own app
  • 饿了吗开源组件库Element模拟购物车系统

    传统的用html jquery来实现购物车系统要非常的复杂 但是购物车系统完全是一个数据驱动的系统 因此采用诸如Vue js angular js这些框架要简单的多 饿了吗开源的组件库Element是基于Vue js 2 0实现的 该组件库
  • mac adt识别 手机

    1 中断输入 system profiler SPUSBDataType system profiler SPUSBDataType 2 找到 Vendor ID Vendor ID 0x2a45 3 echo 0x2a45 gt andr
  • STM32定时器输出比较中断

    在使用定时器输出比较中断来输出PWM信号时 需要将定时器的输出比较匹配模式设置为 非预装载模式 或 预装载模式 预装载模式是指在定时器计数器计数到比较寄存器中的值时 会将下一个要比较的值预先装入到计数器中 而非立即加载 这种模式可以防止由于
  • 如何在Windows下使用OpenGL 2.0的API(包括GLSL)http://sourceforge.net/projects/mesa3d/files/MesaLib/7.0.3/MesaLi

    转 如何在Windows下使用OpenGL 2 0的API 包括GLSL http pkgs fedoraproject org repo pkgs tigervnc MesaLib 7 6 1 tar bz2 7db4617e9e10ad
  • 改变this指向

    改变this指向 题目 封装函数 f 使 f 的 this 指向指定的对象 改变this指向有三种方式 call bind apply call apply 只有一个区别 就是 call 方法接受的是若干个参数的列表 而 apply 方法接
  • 645. 错误的集合

    集合 s 包含从 1 到 n 的整数 不幸的是 因为数据错误 导致集合里面某一个数字复制了成了集合里面的另外一个数字的值 导致集合 丢失了一个数字 并且 有一个数字重复 给定一个数组 nums 代表了集合 S 发生错误后的结果 请你找出重复
  • keil修改字体、文本颜色、背景颜色,global.prop使用

    keil 空乏的文本颜色和背景严重影响使用感 下面教大家如何修改仿VS的黑色主题 自定义字体颜色和背景 点击 Configuration 小扳手图标 Colors Fonts 主要修改 All Editors 和 C C Editor fi
  • 用命令行打开指定目录

    目录 目的 基本指令 打开win格式的路径 写成脚本 打开服务器地址 用简单的命令执行脚本 目的 用命令行打开指定目录 基本指令 nautilus 路径命令可以在ubuntu上直接打开此路径的目录 如nautilus workspace 打
  • 【python实现基于深度学习的文本情感分类(1)】——要做什么?

    All our works can be found on the github project 俗话说得好 万事开头难 往后中间难 最后结尾难 为什么做这个 这是博主人工智能基础课的大作业 内容是用深度学习做金融文本的情感分类 语言 工具
  • ES聚合统计group by,sum,max,min,avg,count等聚合统计

    基本查询 通过match实现全文搜索 FIELD 就是我们需要匹配的字段名 TEXT 就是我们需要匹配的内容 query match FIELD TEXT 通过term实现精确搜索 FIELD 就是我们需要匹配的字段名 TEXT 就是我们需
  • java中Arrays.sort()

    该方法是Arrays类的静态方法 默认对数组进行从小到大进行排序 1 Arrays sort int a 这种形式是对一个数组的所有元素进行排序 并且是按从小到大的顺序 import java util public class Test
  • python中列表和字典的常用知识点

    本文主要介绍python列表和字典的常用知识点 增 删 改 查 一 列表 1 1 提取元素 两种取法 一个是取单个值 一个是取切片 不同点 取值直接使用 列表名 索引值 取到的值的数据类型是元素的数据类型 切片的格式 列表名 左索引值 右索
  • Java泛型详解(进阶四)

    目录 友情提醒 第一章 泛型介绍 1 1 什么是泛型 1 2 泛型为什么出现 第二章 泛型类 接口 方法 2 1 为什么要用泛型类 接口 2 2 自定义泛型类 2 3 多泛型变量 2 4 自定义泛型接口 2 5 自定义泛型方法 2 6 泛型
  • 【目标检测】数据增强

    一 目标检测 yolo v4的related work部分精简的介绍了目标检测部分 目标检测大概分为one stage和two stage部分 其中two stage部分主要包括R CNN系列 one stage则包括anchor base
  • LeetCode初级算法(数组)解答

    这里记录了LeetCode初级算法中数组的一些题目 加一 本来想先转成整数 加1后再转回去 耽美想到测试的例子考虑到了这个方法的笨重 所以int类型超了最大范围65536 导致程序出错 class Solution public vecto
  • ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串.

    1 在
  • org.aspectj.lang.ProceedingJoinPoint获取返回类型、参数名称/值等

    1 参数值 Object args joinPoint getArgs 2 参数名称 Signature signature joinPoint getSignature if signature instanceof MethodSign