我有这样的设置:
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
处于非静态状态(无法控制)。
答案 0 :(得分:2)
您需要参数化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,似乎应该以这种方式开始。