gpt4 book ai didi

java - 为什么内部类提示泛型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:57 26 4
gpt4 key购买 nike

我有一个实现 Iterable 的类,以便用户可以使用迭代器。我正在使用泛型来允许用户使用任何类型并使用该类。

这是下面没有警告的工作代码-

public class CustomStackUsingArray<Type> implements CustomList<Type>, Iterable<Type> {

Type []arr;

public Iterator<Type> iterator() {
return (new ListIterator());
}

private class ListIterator implements Iterator<Type>{
//Implement Iterator here
}

//Implement other methods here
}

但是,如果我有这样定义的 ListIterator-

private class ListIterator<Type> implements Iterator<Type>

我在 Eclipse 中收到警告,参数 Type 隐藏了类型 Type

为什么当我在课后指定泛型类型时它会报错?为了能够在我的类里面使用 Type,我不应该这样做吗?我在定义 CustomStackUsingArray 时添加了 Type 并且效果很好。

最佳答案

当你说 class Something<T> (可能有多个类型参数),您是在告诉编译器您正在定义一个 泛型类,带有 T作为它的参数。你可以说 private class ListIterator<Type2> implements Iterator<Type2> ;那本来是合法的,但不是您想要的。它会创建一个新的通用类,其中 Type2指的是新类型参数的名称。当你说 private class ListIterator<Type> implements Iterator<Type> ,您实际上在做完全相同的事情,但使用名为 Type 的类型参数而不是 Type2 .这TypeType 无关外部类。此外,在这个新类(class)中,每当你说 Type ,您指的是 类型参数,这意味着您不能再引用外部类型参数——它是隐藏的,这就是 Eclipse 告诉您的内容。

这一切的发生是因为您告诉编译器您想要创建一个新的泛型类。但你真的不知道。您只需要一个内部类,它是您正在定义的外部泛型类的一部分(我认为)。因此,您需要省略第一个 <Type> .它应该按照您想要的方式工作。

关于java - 为什么内部类提示泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45271993/

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