Javassist - CannotCompileException: constructor/method 声明未找到

Javassist - CannotCompileException: constructor/method declaration not found

我有以下 class,我想在使用 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 中,我分析了一些 classes 及其字段,然后尝试实例化我的 SomeClass-class。但是对于每个具有另一种类型的字段,我得到以下错误 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使用的。

您需要区分原始数据类型和 类: 原始数据类型(byteshortintlongfloatdoublebooleanchar) 不能像 class 那样使用(比如 Object 在你的情况下),为了能够将它们用作 Objects,你需要包装器 classes (IntegerShortLong 等)。

这是 java 的基础知识,您应该在 java 在线了解原始数据类型:Oracle Java Documentation 可能会帮助您。

您可能还会问自己为什么在有包装器 classes 时甚至需要原始数据类型。您可以在 this Stack Overflow question.

上找到答案