假设我有以下课程:abstract class A { static abstract class _Foo {}}class B extends A { static void doSomething() { System.out.println(C.saySomething()); } static _Foo getInner() { return new C._Foo(); } static abstract class _Foo extends A._Foo {}}final class C extends D { static String saySomething() { return "Something"; }}abstract class D { static class _Foo extends B._Foo { public int value() { return 42; } }}提供一些上下文:所有这些类都驻留在同一个包中。类C和D在编译时生成类A以及C永远不会被实例化;他们只是为类提供一些行为B类B是唯一实际使用的类。类D在编译时之前是未知的,这就是为什么我们只使用Cin B。这类似于人们在使用时可能期望的 google autovalue我的问题是关于中的getInner功能B:哪个_Foo将在该行实例化return new C._Foo();?在_Foo中D或一个在A?这种未定义的行为是否被实例化或是否被记录?如果可能,请提供文件顺序是如何确定的?最后一个问题仅供参考,我最感兴趣的是前两个。谢谢你的帮助。
添加回答
举报
0/150
提交
取消