我以为我很了解Java泛型,但后来我在java.lang.Enum中遇到了以下内容:
class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何解释这个类型参数?用于提供可以使用类似类型参数的其他示例的加分点.
我正在用 Java 泛型做一些实验,遇到了一些奇怪的事情,希望你能帮我弄清楚!(此代码不会仅用于玩泛型)
public abstract class A {
abstract static class Builder<T extends Builder> {
T obj;
public T builder(){
return obj;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我们定义了 B 类,它以两种不同的形式实现了 A 类。一次使用泛型,另一次不使用泛型。
public class B extends A {
public static class Builder extends A.Builder<Builder> {
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我使用上面的代码,如下所示:
new B.Builder().builder().builder()
Run Code Online (Sandbox Code Playgroud)
两种builder()方法的返回类型都是,B.Builder但如果我这样定义 B:
public class B extends A {
public static class Builder<T> extends A.Builder<Builder> {
}
}
Run Code Online (Sandbox Code Playgroud)
并像new B.Builder<String>().builder().builder()第一个builder()方法返回类型一样使用它,B.Builder但第二个builder()返回类型是A.Builder() …