Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';Java找不到这个构造函数吗?_Java - Fatal编程技术网

为什么可以';Java找不到这个构造函数吗?

为什么可以';Java找不到这个构造函数吗?,java,Java,编译上述代码时,我得到一个错误“找不到符号:构造函数ClassB(ClassA,Object1)” 但当我为这两个参数传递“null”时,它编译得很好 为什么会这样 有人能帮我吗 TIA除非存在其他错误,例如TestXML不是有效类或没有扩展XMLBase,否则应该编译该类。如果没有完整的类defn,这将无济于事。这两个类位于不同的包中,并且具有(默认)包可见性,因此它们无法看到对方。把B公之于众就可以了: import package.b.ClassB; class A extends Ba

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

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

为什么会这样

有人能帮我吗


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,它扩展了XMLBase
package
不是有效的包名。这是真实的代码吗?也许你应该发布真实的代码。什么是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)