这是代码:
public class OuterClass<T> {
private T outerField;
public class InnerClass<T> {
private T innerField;
public void setField() {
innerField = (T) outerField;
}
}
}
有没有办法编写“innerField = externalField”以避免强制转换为 T?
我觉得这不是访问通用外部类字段的正确方法,因为内部类应该知道外部字段的类型。
编辑: 我尝试了你的建议,它在我发布的代码示例中有效。 但我真正的代码是这样的:
public class OuterClass<T extends Comparable<T>> implements Iterable<T> {
private T outerField;
@Override
public Iterator<T> iterator() {
return null;
}
public class InnerClass<T extends Comparable<T>> implements Iterator<T> {
@Override
public boolean hasNext() {
return false;
}
@Override
public T next() {
T innerField = (T) outerField;
return null;
}
@Override
public void remove() {
}
}
}
同样,我如何编写“innerField = externalField”以避免强制转换为 T? 抱歉,对于双重问题,但我尝试编写尽可能小的代码片段(并且它不包含我真正的问题)。
重点是,我不能在这里从内部类中删除类型参数 T,因为我必须声明它必须实现 Iterator。
最佳答案
按照 @user3580294 的建议,从 InnerClas 中删除类型参数。所以下面的编译没有任何错误。
public class OuterClass<T> {
private T outerField;
public class InnerClass {
private T innerField;
public void setField() {
innerField = outerField;
}
}
}
关于java - 从内部类访问通用外部类字段而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279645/