为什么可以';Java找不到这个构造函数吗?
编译上述代码时,我得到一个错误“找不到符号:构造函数ClassB(ClassA,Object1)” 但当我为这两个参数传递“null”时,它编译得很好 为什么会这样 有人能帮我吗为什么可以';Java找不到这个构造函数吗?,java,Java,编译上述代码时,我得到一个错误“找不到符号:构造函数ClassB(ClassA,Object1)” 但当我为这两个参数传递“null”时,它编译得很好 为什么会这样 有人能帮我吗 TIA除非存在其他错误,例如TestXML不是有效类或没有扩展XMLBase,否则应该编译该类。如果没有完整的类defn,这将无济于事。这两个类位于不同的包中,并且具有(默认)包可见性,因此它们无法看到对方。把B公之于众就可以了: import package.b.ClassB; class A extends Ba
TIA除非存在其他错误,例如TestXML不是有效类或没有扩展XMLBase,否则应该编译该类。如果没有完整的类defn,这将无济于事。这两个类位于不同的包中,并且具有(默认)包可见性,因此它们无法看到对方。把B公之于众就可以了:
import package.b.ClassB;
class A extends BaseClass {
public void function() {
TestXML obj1 = new TestXML();
ClassB bObj = new ClassB(this, obj1);
}
}
您的错误消息与您显示的构造函数调用不匹配。你有:
public class ClassB {
//blabla
}
什么是Object1
,什么是XMLBase
,什么是TestXML
此外,正如醋指出的,还有无效的包名。如果你能给出一个简短但完整的失败例子,那会有所帮助。目前,看起来您正在使用一些类的精简版本,但命名不一致,这使得了解发生了什么变得更加困难
还有,
ClassB
是公共的吗?它不在您的示例代码中,但您正在导入它,这可能意味着它在另一个包中。。。这是行不通的,因为默认访问权限仅限于同一个包中的代码。考虑到您对传入null是否有效的评论,我怀疑它是公共的(或者导入是不相关的)-同样,一个完整的示例将非常有用。是否定义了obj1
?如果是,定义obj1的目的是什么。这次我提供了一个清晰的画面。见上文。obj1的类型为TestXML,它扩展了XMLBasepackage
不是有效的包名。这是真实的代码吗?也许你应该发布真实的代码。什么是TestXML?我认为它没有扩展XMLBase?我怀疑这不是问题所在,否则当两个参数都使用“null”时它就无法编译。请注意,类A无论如何都不必是公共的-类B不直接引用它,所以这无关紧要。对于类B,除非实际上它已经是公共的,否则如何解释具有两个空参数的构造函数工作?
public class ClassB {
//blabla
}
// In the code
public ClassB(BaseClass bc, XMLBase obj1)
// In the error message
ClassB(ClassA, Object1)