为什么Java不能找到这个构造函数?

时间:2009-12-07 05:30:39

标签: java

package package.b;
class ClassB {

public ClassB(BaseClass bc, XMLBase obj1) { }
}

import package.b.ClassB;

class A extends BaseClass {

    public void function() {
        TestXML obj1 = new TestXML();

        ClassB bObj = new ClassB(this, obj1);
    }

}

当我编译上面的代码时,我得到一个错误“找不到符号符号:构造函数ClassB(ClassA,Object1)”

但是当我为两个参数传递“null”时,它编译得很好。

为什么会这样?

任何人都可以帮助我吗?

TIA

3 个答案:

答案 0 :(得分:3)

您的错误消息与您显示的构造函数调用不匹配。你有:

// In the code
public ClassB(BaseClass bc, XMLBase obj1)

// In the error message
ClassB(ClassA, Object1)

什么是Object1,什么是XMLBase,什么是TestXML

此外,Vinegar指出,包装名称无效。如果您可以生成一个简短但完整的示例失败,那将有所帮助。目前看起来你正在使用几个类的缩减版本,但是命名不一致,这使得弄清楚正在发生的事情变得更加困难。

另外,ClassB公开吗?它不在您的示例代码中,但您正在导入它,这可能意味着它位于不同的包中......这将无效,因为默认访问仅限于同一包中的代码。如果你传入空值,你的评论是有效的,我怀疑 是公开的(或导入是无关紧要的) - 再次,一个完整的示例真的会有帮助。

答案 1 :(得分:2)

这两个类都在不同的包中,并具有(默认)包可见性,因此它们无法看到彼此。公开B,应该没问题:

public class ClassB {
    //blabla
}

答案 2 :(得分:1)

这应该编译,除非有其他错误,例如TestXML不是一个有效的类,也不会扩展你说它的XMLBase。如果没有完整的课程定义,就无法帮助。