public static void invokeGetters(Object obj) {
Class clazz = obj.getClass();
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().matches("get.*") && 0 == method.getParameterCount()) {
try {
System.out.println(method.getName() + " = " + method.invoke(obj));
} catch (Exception e) {
// e.printStackTrace();
类Target.java有一个execute()方法,用一个String数组作为参数
public class Target {
public void execute(String[] args) {
System.out.println("call execute method with parameter type String[]");
java.lang.IllegalArgumentException: Invalid value type for attribute ‘factoryBeanObjectType‘解决方案
今天在写一个反射的例子的时候,遇到了java.lang.IllegalArgumentException: wrong number of arguments这个错误,后来看了源代码,才知道错误的原因,一个很低级的错误;
首先我的代码是这样写的:在我的jpa栏中注解的那块代码中:
public void parse(Object obj, String methodName,String c
报错原因:非法参数(参数个数错误)IllegalArgumentException: wrong number of arguments
这个错误也算是比较常见了,但是应该没有人这样使用!
由于需求是:
将为“”(空字符串)的属性值设置为:null
所以调用invoke方法时,直接传入参数null导致报错
解决方法:
构造一个与该属性类型一致的变量传入即可
例如:字段类型是java.lang.S...
,这几天都忙于给学员加强java基础.
在忙于授课的同时,把今天学员遇到的第一个关于反射的bug:java.lang.IllegalArgumentException: wrong number of
argumen...
当你使用Swing容器时JFrame时且布局是CardLayout时,当报出此错误时,说明在更换卡片时,直接对窗体进行了操作,而窗体是不能直接更换的,被跟换的是窗体中的JPanel,所以只需要在窗体的位置加上.getContentPane()即可解决问题。
CardLayout cl = new CardLayout(); //新建一个卡片式布局对象
this.setLayout(cl); //将窗体设置为卡片式布局
//cl.show(this,"2"); //错误示范
cl.show(this.
这几天也没事干, 玩一玩Java的反射机制, 第一天玩这个, 没想到就遇到了一个Exception, 好高兴啊! 虽然网上也有许多这方面的异常, 我看自己还是整理一下吧!
/** 一个简单的实体类 */
public class User {
private int id;
private String name;
private boolean flag;
/** 写三个构造方法,
在用反射调用Hello.java的main方法时报了一个异常
java.lang.IllegalArgumentException: wrong number of argumentspackage classloader;
public class Hello{
public static void main(String args[]){
for(String arg:
public List<User> selectUsers(Integer role, PageSort page) { log.info("批量查询用户信息,查询的角色权限:" + role); List<User> usersList = new ArrayList<User>(); int offset = (page.getPageNum() - 1) * page.getPageSize(); int limit = page.getPageSize(); RowBounds rowBounds = new RowBounds(offset, limit); List<User> userList = userInfoMapper.selectByRoleAndPage(role, rowBounds); return usersList; } @SelectProvider(type = UserSqlProvider.class, method = "selectByRoleAndPage") List<User> selectByRoleAndPage(@Param("role") Integer role, RowBounds rowBounds); public class UserSqlProvider { public String selectByRoleAndPage(Integer role, RowBounds rowBounds) { String sql = "SELECT * FROM user WHERE 1=1"; if (role != -1) { sql += " AND role = #{0}"; } sql += " LIMIT #{1.offset}, #{1.limit}"; return sql; } } 报错Error invoking SqlProvider method (com.ruifan.taihaolian.biz.mapper.provider.UserSqlProvider.selectByRoleAndPage). Cause: java.lang.IllegalArgumentException: wrong number of arguments
java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数。 两个数组不是一个意思啊。
我们应该把数组转为objet,这样才表示一个参数。
import java.lang.reflect.Method;
public class MethodTest {
public void a(String[] args) {
Sys...