java - 使用与封闭类具有相同泛型类型的静态嵌套类

标签 java generics

我有这样的设置:

public final class RequestContext<T extends Cache> {
     T roleSpecificCache;

     public static final class Spec implements Supplier<RequestContext> {
          private Spec() {

          }

          T roleSpecificCache; // << Getting error here
     }

     private RequestContext(Spec b) {
        this.roleSpecificCache = b.roleSpecificCache; // << I want to do this
     }
   }

但是,在 T roleSpecificCache 行上,我收到以下错误 :

RequestContext.this cannot be referenced from a static context

理解出现此错误的原因(即两个类之间没有直接链接),但不知道如何修复它。我希望最终能够做我正在做的事情。

此外,我无法使 Spec 成为非静态(超出我的控制范围)。

最佳答案

您需要参数化Spec:

public final class RequestContext<T extends Cache> {
     T roleSpecificCache;

     public static final class Spec<T extends Cache>
     implements Supplier<RequestContext<T>> {
          private Spec() {
          }

          T roleSpecificCache;
     }

    private RequestContext(Spec<T> b) {
        this.roleSpecificCache = b.roleSpecificCache;
    }
}

由于raw type argument to Supplier, which should be avoided,看起来似乎一开始就应该是这样的。 .

关于java - 使用与封闭类具有相同泛型类型的静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51433894/

相关文章:

java - Vert.x 多线程网络套接字

c# - 为什么密封类不允许作为泛型类型参数?

java - 告诉 SAX 解析器忽略无效字符?

java - 仅在一侧使用 ID 的双向映射

java - Android 应用程序在定义字节缓冲区来读取文件时崩溃

java - 具有继承支持泛型问题的构建器模式

c# - 如何使用泛型将我的类转换为动态类型 <T>

java - .obj 文件的简单正则表达式存在困难

generics - Newtype 作为 Rust 中的泛型参数?

Java 通用对象初始化