我刚开始写java,今天我读了一些这样的代码:
public interface A extends B<A>{
...
}
public interface B<E extends B<E>>{
...
}
我当然能看懂代码,但它让我真的很困惑。看起来……我用自己创造了自己?编译器如何处理?
最佳答案
是的,编译器的能力令人惊讶。正如其他答案所述,泛型参数是通过引用使用的。但是有汇编(.class)和它们的依赖关系。注意:一些运行时错误是由不同步编译引起的,您可以将 .java 文件存储在 jar 中 - 我相信)。
与自引用的杂耍通常用于将子类的类传递给父类(super class),以将事物(方法)限制到子类。
但是循环行为的相同技巧可以作为纯类来完成:
public interface Foo {
Foo ZERO = new Bar();
}
public class Bar implements Foo {
... ZERO ...
}
所以java编译器解决了这个鸡/蛋问题。
关于java - java编译器如何处理像 `public interface A extends B<A>`这样的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64116558/