Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泛型类型参数隐藏类型_Java_Generics - Fatal编程技术网

Java 泛型类型参数隐藏类型

Java 泛型类型参数隐藏类型,java,generics,Java,Generics,我创建了接口卡,如下所示 public interface Card extends Comparable<Card> { ..... } then public interface Deck<Card> { public void add(Card card); } 公共接口卡扩展{ ..... } 然后 公共接口甲板{ 公共作废添加(卡片); } 在带有类型参数的Deck接口中,我得到警告类型参数隐藏了

我创建了接口卡,如下所示

  public interface Card extends Comparable<Card> {
    .....
    }

then 

    public interface Deck<Card> {
          public void add(Card card);
    }
公共接口卡扩展{
.....
}
然后
公共接口甲板{
公共作废添加(卡片);
}
在带有类型参数的Deck接口中,我得到警告类型参数隐藏了类型卡。我也可以声明类型T而不是Card,但更合理的是,用于容纳Card对象的组不超过该值

我读了一些老帖子,但没有弄清楚为什么会有这样的警告,以及到底有什么实际意义/编译器为什么抱怨。

Deck
Deck<Card>
将单词“Card”指定为Deck类中某个类型的占位符,方法与

Deck<T>
甲板
它只是一个占位符

如果你不想让牌组容纳除牌以外的任何东西,那么最好的选择是将牌组中的泛型类型一起去掉。

deck
将单词“Card”指定为Deck类中某个类型的占位符,方法与

Deck<T>
甲板
它只是一个占位符


如果您不希望一个数据组包含除卡以外的任何内容,那么最好的选择是将数据组中的泛型类型一起去掉。

泛型意味着您需要一个类,该类可以根据特定实例所需的特定类型处理不同的数据类型。例如,考虑这些列表:第一个列表可以保存整数,第二个列表可以保存字符串,并且可以提供所有操作,而不管在特定实例中使用的数据类型。
List list1=new ArrayList();
List list1=新的ArrayList()

如果您不希望卡片组存储除
卡片以外的任何东西,那么它就不能证明使用泛型的合理性


对于第二部分,编译器之所以显示警告是因为
Deck
接口只是将
视为占位符,而不是
接口。因此,为了明确地告诉您这一点,编译器将显示此警告。

泛型意味着您需要一个类,该类可以根据特定实例所需的特定类型处理不同的数据类型。例如,考虑这些列表:第一个列表可以保存整数,第二个列表可以保存字符串,并且可以提供所有操作,而不管在特定实例中使用的数据类型。
List list1=new ArrayList();
List list1=新的ArrayList()

如果您不希望卡片组存储除
卡片以外的任何东西,那么它就不能证明使用泛型的合理性


对于第二部分,编译器之所以显示警告是因为
Deck
接口只是将
视为占位符,而不是
接口。因此,为了明确地告诉您这一点,编译器正在显示此警告。

在类似的场景中,我通常使用
TCard
命名。恐怕这个问题只有基于意见的答案。请尝试使用公共接口组(但是,这不是正确的方法,我不需要使用通用接口组)。在类似的场景中,我通常使用
TCard
命名。恐怕这个问题只有基于意见的答案。请尝试使用公共接口组(但是,这不是正确的方法,我不需要使用通用接口组)