这是代码:
public class OuterClass<T> {
private T outerField;
public class InnerClass<T> {
private T innerField;
public void setField() {
innerField = (T) outerField;
}
}
}
有没有办法写'innerField = outerField'避免强制转换为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 = outerField'以避免强制转换为T? 对不起,对于双重问题,但我尝试编写最小的代码片段(并且它不包含我真正的问题)。
关键是我无法从内部类中删除类型参数T,因为我必须声明它必须实现Iterator。
答案 0 :(得分:1)
InnerClass#innerField
与OuterClass#outerField
的类型不同,因为内部T
参数隐藏了外部{{1}}。
答案 1 :(得分:1)
从@ user3580294建议删除InnerClas中的type参数。所以下面的编译没有任何错误。
public class OuterClass<T> {
private T outerField;
public class InnerClass {
private T innerField;
public void setField() {
innerField = outerField;
}
}
}