gpt4 book ai didi

java - 具有实例变量的通用内部类是另一个通用内部类的对象

转载 作者:行者123 更新时间:2023-11-30 06:21:40 25 4
gpt4 key购买 nike

首先,我意识到我可以制作ProblemClass一个非泛型类并且不会收到编译器错误。我想知道这个错误是什么意思。我的代码很简单,一个泛型类有两个私有(private)内部类。外部类有一个类型为 InnerClass<E> 的实例变量和内部类 ProblemClass<E>还有一个 InnerClass<E> 类型的实例变量.当 ProblemClass 被实例化时,它所做的只是设置 o = a,其中 o,a 分别是外部类和内部类的实例变量。

public class SuperClass<E> {

private class InnerClass<E> {
}

private class ProblemClass<E> {
private InnerClass<E> o;

public ProblemClass() {
o = a;
}
}

private InnerClass<E> a;
}

我收到以下错误。

SuperClass.java:11: error: incompatible types
o = a;
^
required: SuperClass<E#1>.InnerClass<E#2>
found: SuperClass<E#1>.InnerClass<E#1>
where E#1,E#2 are type-variables:
E#1 extends Object declared in class SuperClass
E#2 extends Object declared in class SuperClass.ProblemClass
1 error

我的问题是,这个错误是什么意思?

最佳答案

很简单 ProblemClassEInnerClassE 不相关 - 你的代码是等价的到

public class SuperClass<E> {

private class InnerClass<F> {
}

private class ProblemClass<G> {
private InnerClass<G> o;

public ProblemClass() {
o = a;
}
}

private InnerClass<E> a;
}

而且你可以清楚地看到ao不一定兼容。

关于java - 具有实例变量的通用内部类是另一个通用内部类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20150640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com