java - java编译器如何处理像 `public interface A extends B<A>`这样的代码

标签 java generics interface compiler-construction

我刚开始写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/

相关文章:

c# - 在 C# 或 Java 中对 MruList 进行高效建模

java - 为什么通用类型参数说 "extends"Comparable 而不是 "implements"?

java - 类数组,特定类的子类

java - 将静态方法作为参数发送并在 Java 中的另一个方法中进行一般调用

java - 在Java中实现CustomList的List接口(interface)

java - 监听多个目录以在 Java 中创建文件

Java:创建作为函数参数传递的泛型类型的实例

java - 合并 surefire JUnit 报告

c# - MySql 和 SQlite 类实现接口(interface)

laravel - Laravel 中的契约(Contract)和 PHP 中的接口(interface)有什么区别?