Kotlin实现动态代理报错:java.lang.IllegalArgumentException: wrong number of arguments

LLC谐振变换器设计实战:从工作原理到参数设计与调试 开关电源设计是电力电子领域的核心技术,其核心目标在于提升效率与功率密度。为实现这一目标,软开关技术应运而生,它通过精心控制开关器件的电压与电流波形,使其在开通或关断瞬间实现零电压或零电流切换,从而从根本上降低开关损耗。LLC谐振变换器正是这一技术的杰出代表,它通过引入谐振网络,巧妙地实现了主开关管的零电压开关和次级整流管的零电流开关。这种拓扑结构在服务器电源、通信设备及高端显示驱动等要求高效率、高功率密度的应用场景中价值显著。本文将以半桥LLC为例,深入剖析其工作模态与增益特性,并系统阐述其参数设计、仿真验 阅读详情

在使用Kotlin实现JDK动态代理时遇到一个报错提示:

java.lang.IllegalArgumentException: wrong number of arguments

StackOverflow:Why is Kotlin throw IllegalArgumentException when using Proxy
简化的例子:

    var handler = object : InvocationHandler {
        val worker = Worker()
        override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any? {
   		===== 报错位置=====》  return method!!.invoke(worker,args)
        }
    }
报错分析

在Java中实现动态代理的一个核心接口类是 java.lang.reflect.InvocationHandler,如下:

public interface InvocationHandler {
    public Object invoke(Object proxy, Method method, Object[] args)
        throws Throwable;
}

被代理的接口对象的方法,均会在invoke中,通过被调用执行。

method.invoke(obj,args)

//Method #invoke的方法定义
public Object invoke(Object obj, Object... args)

这里需要关注的是Object[] args、Object… args这两种形式。
额外信息:

可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。
可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。

注意在Kotlin里的默认形式为:

    var handler= object :InvocationHandler{
        override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {
            TODO("not implemented") 
        }
    }

这里的args:Array? , 与不定长参数是不兼容的。需要在args前加上伸展操作符(*),表示将已有的数组内容传递给函数
官方文档:可变数量的参数Varargs

修正后的写法:

method!!.invoke(worker, *(args ?: arrayOfNulls<Any>(0)))
001、专栏导论:为什么我们需要MLIR与算子中间表示 五年前,大家还在争论“TVM还是XLA”。现在回头看,TVM的Relay IR和XLA的HLO都是特定领域的IR,它们解决了各自的问题,但缺乏通用性。MLIR的出现,本质上是因为硬件异构化已经到了一个临界点——CPU、GPU、NPU、DSP、FPGA,每个硬件都有自己的指令集和内存层次,没有一个统一的IR能同时高效表达所有硬件的计算模式。MLIR的“方言+渐进式lowering”模式,恰好提供了这种灵活性。你可以为每个硬件定制一套方言,然后共享公共的lowering路径。 阅读详情

相关推荐

Linux 命令之 localectl -- 控制系统的本地化与键盘布局

文章目录命令介绍常用选项参考示例(一)显示当前的本地化设置与键盘映射(二)设置系统的本地化字符集环境变量(三)列出本地所有字符集(四)列出所有可用的控制台键盘映射(五)设置控制台的键盘映射 命令介绍 localectl 命令可用于查询与修改系统的本地化(locale)与键盘布局的设置。 它通过与 systemd-localed.service 通信来修改例如 /etc/locale.conf 与 /etc/vconsole.conf 之类的配置文件。本地化设置控制着 用户界面的语言、字符类型与字符编码、 日

liaowenxiong的博客 5398

Gemma 3 270M轻量大模型Android端实战部署指南

轻量大模型(LLM)是指参数量在100M–1B之间、专为边缘设备优化的生成式AI模型,其核心原理在于结构精简、嵌入层强化与量化感知训练(QAT)协同设计。技术价值体现在低功耗推理、离线运行能力与高指令遵循精度,显著区别于通用大模型的泛化倾向。典型应用场景包括移动端合同解析、医疗术语识别、工业文档理解等对隐私性、实时性和领域准确性要求严苛的落地环节。本文聚焦Gemma 3 270M这一具备256K词表与Q8量化支持的端侧模型,详解其在Android平台基于LiteRT与Gallery App的工程化集成路径,

weixin_34319374的博客 446

聚类分析之——Kmeans算法(一)

原创地址:http://www.toutiao.com/i6399454239554273794/ 聚类分析是一种静态数据分析方法,常被用于数据挖掘、机器学习、模式识别等领域,聚类是一种无监督式的学习方法。它是在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法。聚类的算法有很多

june2017的博客 3533

解析Java反射java.lang.IllegalArgumentException: wrong number of arguments

今天在写一个反射的例子的时候,遇到了java.lang.IllegalArgumentException: wrong number of arguments这个错误,后来看了源代码,才知道错误的原因,一个很低级的错误; 首先我的代码是这样写的:在我的jpa栏中注解的那块代码中: public void parse(Object obj, String methodName,String c

学而不思则罔,思而不学则殆! 3万+

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

LiveKit 本地部署实战:从零搭建安全实时通信环境(Caddy+HTTPS)

本文详细介绍了如何从零开始搭建LiveKit本地部署环境,结合Caddy服务器实现HTTPS安全通信。通过环境准备、证书生成、服务配置到前端客户端集成的完整流程,帮助开发者快速构建实时音视频应用,特别适合需要安全实时通信的场景。

weixin_29227585的博客 681

JAVA常见异常

空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象是null时引发。上述代码中引用类型变量str的值为null,此时不能通过它调用字符串的方法或引用属性,否则就会引发空指针异常。解决办法:找到为什么赋值为null,确保该对象的值不能为null再操作属性或方法即可。

weixin_51140686的博客 1149

Gemini Enterprise免费试用攻略:解锁企业级AI平台的隐藏技巧与避坑指南

本文详细介绍了Gemini Enterprise免费试用的全流程攻略,包括注册优化、团队协作、资源管理和典型应用场景。通过解锁企业级AI平台的核心功能如Gemini 3.0 Pro模型和Nano Banana图像生成系统,帮助企业高效评估AI与业务的契合度。文章还提供了安全合规与数据管理的实用建议,确保试用过程顺畅无忧。

weixin_29233857的博客 657

Java反射异常:java.lang.IllegalArgumentException: wrong number of arguments

在用反射调用Hello.java的main方法时报了一个异常 java.lang.IllegalArgumentException: wrong number of argumentspackage classloader; public class Hello{ public static void main(String args[]){ for(String arg:

渐入佳境Coder 2万+

ArcGIS供地图斑图形及属性入库操作(附练习数据)

已知数据: 供地图斑位置图。 供地图斑表格 成果要求:将供地图斑导入mdb数据库并将供地图斑表格的属性进行挂接。 接下来我们开始操作: 1、 打开arcmap,在目录内连接的文件夹内找到供地图斑位置图。图片 2、 将annotation和polygon添加到arcmap图片 3、 右击文件所在文件夹新建mdb数据库图片 4、 右击数据库新建要素数据集。(要素数据集非常重要,稍后所有操作都在数据集内进行)选择图斑投影方式及代号。图片 5、 右击要素数据集—导入(将图层内的数据导入数据库)图片 6、 数据导入.

qq_43173805的博客 8132

EtherCAT主站SOEM -- 24 -- 基于STM32F767IGT6搭建自己的SOEM-EtherCAT主站

以上就是EtherCAT主站SOEM – 23 – 基于STM32F767IGT6搭建自己的SOEM-EtherCAT主站的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 3556

Java反射中java.lang.IllegalArgumentException: wrong number of arguments异常解决

arguments的问题解析如下: 1、错误bug java.lang.IllegalArgumentException: wrong number of arguments at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun...

2678

RH850 GreenHillSoftware Install

IDE一次链接到一个Compiler/Green Hills Debug Probe安装目录。如果您安装了IDE、编译器和绿山调试探测器软件,安装程序会将安装链接在一起。如果您只使用Advanced Install选项安装IDE,那么当您第一次启动它时,IDE会提示您链接到编译器和绿山调试探针安装*。如果您使用Advanced Install选项只安装编译器和绿山调试探针软件,安装程序会提示您将IDE的安装链接到新的编译器和绿山调试探针安装。

舊梦的博客 1217

Java反射调用报错 java.lang.IllegalArgumentException: wrong number of arguments

问题描述 类Target.java有一个execute()方法,用一个String数组作为参数 public class Target { public void execute(String[] args) { System.out.println("call execute method with parameter type String[]"); } } ...

Night Field' Blog 2551

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

反射报错java.lang.IllegalArgumentException: wrong number of arguments

class Person{ private String name ; private String sex ; public Person(){ System.out.println("c"); } public Person(String c1){ this.name =c1; ...

581

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

反射invoke参数类型为数组时报java.lang.IllegalArgumentException: wrong number of arguments异常

由于setXXX只有一个String数组的参数,所以这是编译器会把字符串数组当作一个可变长度参数 而我们取得方法只有一个参数,所以就会出现wrong number of arguments的异常,我们只要把字符串数组强制转换为一个Object对象就可以解决这个问题了。 ...

lpy943739901的博客 1434

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Exception in thread “main“ java.lang.IllegalArgumentException: wrong number of arguments

Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments

Newolder的博客 1176

[异常]java常见异常

常见异常

YJH000_的博客 1191

原创:Java反射java.lang.IllegalArgumentException: wrong number of arguments错误解析

[code="java"] 时光如梭,转眼间到了2011年,新的一年,新的开始,希望同学们在这一年里有更大的收获. 我们开始了今年的第一个班级授课任务 ,这几天都忙于给学员加强java基础. 在忙于授课的同时,把今天学员遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number of argumen...

Red88Army的专栏 592

java使用invoke反射调用成员函数时遇到的坑--> IllegalArgumentException: wrong number of arguments

参考博客:https://www.cnblogs.com/firstdream/p/4830960.html 问题背景: 使用invoke传递参数时,要考虑参数的个数: public Object invoke(Object obj, Object... args) /* Parameters: obj - the object the underlying method is invoked from args - the arguments used for the me

mengmengmengwang的博客 2409

【JAVA反射】设置参数值为:null时,报错:IllegalArgumentException: wrong number of arguments

报错原因:非法参数(参数个数错误)IllegalArgumentException: wrong number of arguments 这个错误也算是比较常见了,但是应该没有人这样使用! 由于需求是: 将为“”(空字符串)的属性值设置为:null 所以调用invoke方法时,直接传入参数null导致报错 解决方法: 构造一个与该属性类型一致的变量传入即可 例如:字段类型是java.lang.S...

只剩渣了的博客 3057

java.lang.IllegalArgumentException: wrong number of arguments

这几天也没事干, 玩一玩Java的反射机制, 第一天玩这个, 没想到就遇到了一个Exception, 好高兴啊! 虽然网上也有许多这方面的异常, 我看自己还是整理一下吧! /** 一个简单的实体类 */ public class User { private int id; private String name; private boolean flag; /** 写三个构造方法,

新成同学 4781

java反射 java.lang.IllegalArgumentException: wrong number of arguments

很多人学习反射的时候,回碰到的一个异常, 举个例子:这个类里面有四个构造函数 public class Person { public Person() { } public Person(String name) { this.name = name; } public Person(int age) { this.age = age; } public Pe

素剑步青尘 2620

Java学习笔记--Java中必记常见异常

JAVA常见异常 Java.io.NullPointerException null 空的,不存在的 NullPointer 空指针 空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象是null时引发。 String str = null; str.length();//空指针异常 上述代码中引用类型变量str的值为null,此时不能通过它调用字符串的方法或引用属性,否则就会引发空指针异常。 解决办法: 找到为什么赋值为null,确保该对象的值不能为null再操作属性或方法即可。 ja

Byragon的博客 963

Java动态代理中报java.lang.IllegalArgumentException非法参数异常

今天在学习动态代理,在调试的过程中出现了非法参数异常的问题,先看下异常: Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(...

OceanSky的专栏 8551

原创:Java反射中java.lang.IllegalArgumentException: wrong number of arguments异常

        时光如梭,转眼间到了2011年,新的一年,新的开始,希望同学们在这一年里有更大的收获. 我们开始了今年的第一个班级授课任务,这几天都忙于给学员加强java基础.    在忙于授课的同时,把今天学员遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number ofarguments的问题解析如下:

redarmychen的专栏 2万+
上一篇: Gradle Android基本应用
下一篇: String的魔鬼链式提问
Ksee
博客等级 码龄12年 1粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值