Javassist - CannotCompileException:找不到构造函数/方法声明

时间:2015-05-06 17:10:54

标签: java android javassist

我已经使用Javassist在我生成的代码中使用了以下类。

public class SomeClass {
    private String someString;
    private Object someValue;

    public SomeClass() {}

    public SomeClass(String someString, Object someValue) {
        this.someString = someString;
        this.someValue = someValue;
    }

    public void setSomeValue(Object someValue) {
        this.someValue = someValue;
    }

在Javassist中,我分析了一些类及其字段,然后尝试实现我的SomeClass类。但是,对于每个具有java.lang.Object的其他类型的字段,我会收到以下错误。

javassist.CannotCompileException: [source error] setSomeValue(int) not found in com.test.SomeClass

javassist.CannotCompileException: [source error] setSomeValue(double) not found in com.test.SomeClass

等等。当我尝试使用构造函数时也会发生同样的情况。

为什么这不起作用?

顺便说一句,Javassist与Android结合使用。

1 个答案:

答案 0 :(得分:0)

您需要区分原始数据类型和类: 原始数据类型(byteshortintlongfloatdoubleboolean,{{1} }}不能像类一样使用(比如你的char),为了能够将它们用作Object,你需要包装类(Objects,{{1} },Integer等。)。

这是java的基础,你应该在java在线了解原始数据类型:Oracle Java Documentation可以帮助你。

当有包装类时,您可能也会问自己为什么原始数据类型甚至是必要的。您可以在this Stack Overflow question上找到答案。