Java 带反射的IllegargumentException
下面是一个小测试代码,它将背景设置为itext块对象。我打算使用反射在块对象上执行以下方法 Chunk Chunk=新Chunk();BaseColor BaseColor=新的BaseColor(45,90135);块.背景(基色)Java 带反射的IllegargumentException,java,reflection,itext,Java,Reflection,Itext,下面是一个小测试代码,它将背景设置为itext块对象。我打算使用反射在块对象上执行以下方法 Chunk Chunk=新Chunk();BaseColor BaseColor=新的BaseColor(45,90135);块.背景(基色) package com.blubench.test; 导入java.lang.reflect.Constructor; 导入java.lang.reflect.InvocationTargetException; 导入java.lang.reflect.Metho
package com.blubench.test;
导入java.lang.reflect.Constructor;
导入java.lang.reflect.InvocationTargetException;
导入java.lang.reflect.Method;
导入com.itextpdf.text.Chunk;
公共类BaseColorReflection{
静态最终字符串methodName=“setBackground”;
静态最终字符串className=“com.itextpdf.text.Chunk”;
静态最终字符串param=“com.itextpdf.text.BaseColor”;
公共静态void main(字符串[]args)抛出ClassNotFoundException、SecurityException、NoSuchMethodException、IllegalArgumentException、InstanceionException、IllegalAccessException、InvocationTargetException{
//**********目标类**************
Class chunkClass=Class.forName(className);
Chunk=(Chunk)chunkClass.newInstance();
//*********参数对目标法*********
Class baseColorClass=Class.forName(参数);
类[]argTypes={int.Class,int.Class,int.Class};
构造函数baseColorCtor=baseColorClass.getDeclaredConstructor(argTypes);
对象[]argValues={45,90135};
Object baseColorObject=baseColorCtor.newInstance(argValues);
//*********目标方法****************
方法Method=chunkClass.getDeclaredMethod(方法名,baseColorObject.getClass());
试一试{
//***********使用参数对目标类调用目标方法**********
调用(chunk,baseColorObject.getClass());
}捕获(IllegalArgumentException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(非法访问例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(调用TargetException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
这就是我得到的
java.lang.IllegalArgumentException:处的参数类型不匹配
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于
位于的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于
java.lang.reflect.Method.invoke(未知源代码)位于
com.blubench.test.BaseColorReflection.main(BaseColorReflection.java:33)
这是一个非常常见的问题,但我无法确定是什么导致了这一问题?传递参数实例,而不是参数的类: 改变
method.invoke(chunk, baseColorObject.getClass());
到
method.invoke(chunk, baseColorObject.getClass());
method.invoke(chunk, baseColorObject);