gpt4 book ai didi

java - 关于在另一个接口(interface)中实现泛型接口(interface)的误解

转载 作者:行者123 更新时间:2023-11-29 07:29:27 25 4
gpt4 key购买 nike

我尝试创建实现另一个通用接口(interface)的接口(interface):

public interface MinMax implements Comparable<T> {
}

但是在 T 上我得到错误无法解析符号 T

所以我尝试了这个语法:

public interface MinMax <T extends Comparable> {    
}

成功了,上面的语法没有任何错误。

我不明白为什么我应该使用 extends 而不是 implements 而 comparable 是接口(interface)。

最佳答案

在您的第一个片段中,您尝试使用通用类型变量 T无需先声明。你也不能说接口(interface) implements另一个接口(interface)(只有一个类可以实现一个接口(interface))。相反,一个接口(interface)可以扩展另一个接口(interface)。

你可以声明它:

public interface MinMax<T> extends Comparable<T> {

}

这意味着接口(interface) MinMax有一个名为 T 的泛型类型参数接口(interface)扩展了Comparable<T>接口(interface)(这意味着 MinMax 接口(interface)的任何实现都必须实现 public int compareTo(T o); 方法)。

你的第二个片段

public interface MinMax <T extends Comparable> {

}

有不同的含义。这里MinMax还有一个名为 T 的泛型类型参数, 但你需要 T工具 Comparable (请注意,当在泛型类型绑定(bind)中使用时,关键字 extends 可以表示扩展类或实现接口(interface)),这表示 MinMax本身不扩展 Comparable界面。

最后一件事,第二个片段更有意义

public interface MinMax <T extends Comparable<T>> {

}

因为你不想使用原始的 Comparable界面。您要指定要与 Comparable 进行比较的对象类型.

关于java - 关于在另一个接口(interface)中实现泛型接口(interface)的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053499/

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