0
public void setParent(Window parent) {
    if (true) {
        this.parent = ((abc.InvestRegPropertySeize) parent);
    } else {
        this.parent = ((cde.InvestRegPropertySeize) parent);
    }
}

在上面,当我编译此代码时,它已成功编译,编译后我手动删除了“cde.InvestRegPropertySeize”的类文件,当我尝试运行此代码时,出现以下错误。

NoDefClassFoundError of'cde.InvestRegPropertySeize'

但我认为这不应该发生,因为条件总是正确并且在运行时不需要'cde.InvestRegPropertySeize'类文件那么为什么会发生请告诉我解决方案。

4

1 回答 1

0

做这样的事情的唯一方法是使用反射。删除代码中的两个强制转换,这样类就不会在运行时被解析。然后使用反射访问字段和调用方法。反射功能强大,但代码可读性不强,并且会带来一些性能开销。所以在使用它之前要三思而后行。

于 2012-07-12T07:02:05.103 回答