如果A类引用了B类而B类引用了A类,那么它在Java中是否可以接受?如果是,当我们执行A类时,B类将不会被实例化。那么编译器将如何执行B类的引用?
TIA
答案 0 :(得分:4)
如果A类引用了B类而B类引用了A类,那么它在Java中是否可以接受?
是
当我们执行A类时,B类将不会被实例化。那么编译器将如何执行B类的引用?
您必须首先创建一个对象,然后创建另一个对象,然后关闭循环;例如像这样的东西。
A a = new A();
B b = new B(a);
a.setB(b);
(这假设已使用A
方法定义了setB(A)
类。还有其他形成循环的方法,但这是最简单的。)
但请注意,您的术语完全错误。
javac
)不会“执行”任何内容......它只是编译代码。java
命令时。(如果您要与其他IT专业人员进行沟通,请务必学习并使用正确的Java术语。这样可以避免很多错误传达和混淆!)
答案 1 :(得分:1)
这很好。
对象A可以引用对象B,对象B可以引用对象A.实际上,您可以在代码中的图形中经常看到这一点,其中节点将引用整个图形,而图形引用了许多节点。
答案 2 :(得分:0)
是的,这是可以接受的,因为编译器将对另一个类的调用作为方法名称加上签名:参数类型再次作为文本存储。
我甚至看到过以下恐怖
interface A {
final A = new B();
}
class B implements A {
}
Java松散绑定;抛出相应的运行时异常。 同样是针对另一个版本的库jar进行编译,并使用破坏了API的jar运行。