50 Star 106 Fork 47

Small Warm / asmsupport

 / 详情

[25分] Integer值赋值给Integer变量出错(其他基本类型封装类也会出现)

已完成
拥有者
创建于  
2015-05-22 11:04
DummyClass dummy = new DummyClass(IntegerAssignTest.class.getPackage().getName() + ".IntegerAssignTest_");
dummy.public_().setClassOutPutPath(IssuesConstant.classOutPutPath);

//public static int getIntegerValue() {
DummyMethod dummyMethod = dummy.newMethod("getIntegerValue")
		.public_().static_().return_(int.class);

dummyMethod.body(new MethodBody() {

	@Override
	public void body(LocVar... args) {
		Var integer = call(Integer.class, "valueOf", val(100)).asVar();
		return_(integer);
	}
});
Class<?> clazz = dummy.build();
Method method = clazz.getMethod("getIntegerValue");
int value = (Integer) method.invoke(clazz);
Assert.assertEquals(100, value);

执行上面代码出错,这里是报错内容:

Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    cn/wensiqun/asmsupport/issues/y2015/m5/IntegerAssignTest_.getIntegerValue()I @8: astore_0
  Reason:
    Type integer (current frame, stack[0]) is not assignable to reference type
  Current Frame:
    bci: @8
    flags: { }
    locals: { }
    stack: { integer }
  Bytecode:
    0000000: 1064 b800 0cb6 000f 4b2a b600 0fac     

	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
	at java.lang.Class.getMethod0(Class.java:2813)
	at java.lang.Class.getMethod(Class.java:1663)
	at cn.wensiqun.asmsupport.issues.y2015.m5.IntegerAssignTest.main(IntegerAssignTest.java:35)

评论 (1)

状态更改为 已关闭

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
1149 wensiqun 1642428281
Java
1
https://gitee.com/wensiqun/asmsupport.git
git@gitee.com:wensiqun/asmsupport.git
wensiqun
asmsupport
asmsupport

搜索帮助