编译器确实阻止了您在这里开枪。直到调用超级构造函数之后,B才被完全构造,因此,如果您将此方法(如果编译器允许的话)作为引用传递,并且它在B上调用方法,则B处于无效状态并导致各种棘手的问题(实际上,A尚未初始化,也没有链上的任何类,包括Object)。
显而易见的解决方案是提供B之外的功能,并将其传递给参数的构造函数。特定的解决方案将取决于特定的问题,但是B内部的静态嵌套类(出于相同的原因,它必须是静态的-
内部类对外部类实例具有隐式引用)可以提供该功能。也许您需要重新考虑参数B及其超类之间的关系。这全视情况而定。



