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
答案 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。如果没有完整的课程定义,就无法帮助。