使用私有成员参数化泛型类型



创建具有泛型类型的类时,似乎不可能使用私有类作为类型参数,即使该类是泛型类型的内部类也是如此。考虑这个代码:

import java.util.Iterator;
import test.Test.Type;
public class Test implements Iterable<Type> {
@Override
public Iterator<Type> iterator() {return null;}
static class Type {}
}

上面的例子编译,而当Type为私有时,相同的例子不编译

import java.util.Iterator;
// ERROR: The type test.Test.Type is not visible
import test.Test.Type;
// ERROR: Type cannot be resolved to a type
public class Test implements Iterable<Type> {
@Override
// ERROR: The return type is incompatible with Iterable<Type>.iterator()
public Iterator<Type> iterator() {return null;}
private static class Type {}
}

为什么不可能使用私有类作为其封闭类的类型参数?即使是私有的,在我看来,类Type应该在类Test中可见。

我可以假设这是因为如果您将Type设置为privat,则无法获得迭代器((的结果,因为Type是看不见的。我可能错了。

这是因为Test类之外的任何代码都不能访问Type

如果您将返回Iterator的方法限制为私有可见性,它将编译:

import java.util.Iterator;
public class Test {
public void doTest() {
Iterator<Type> it = iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
private Iterator<Type> iterator() {
return null;
}
private static class Type {}
}

相关内容

  • 没有找到相关文章

最新更新