相关疑难解决方法(0)

为什么T在Collections.max()签名中受Object限制?

刚刚完成了Java 7的java.util.Collections类的实现,看到了一些我不理解的东西.在max函数签名中,为什么T受限于Object

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
    Iterator<? extends T> i = coll.iterator();
    T candidate = i.next();

    while (i.hasNext()) {
        T next = i.next();
        if (next.compareTo(candidate) > 0)
            candidate = next;
    }
    return candidate;
} 
Run Code Online (Sandbox Code Playgroud)

max 如果省略Object绑定似乎工作正常.

public static <T extends Comparable<? super T>> T max(Collection<? extends T> coll) {
    Iterator<? extends T> i = coll.iterator();
    T candidate = i.next();

    while (i.hasNext()) …
Run Code Online (Sandbox Code Playgroud)

java generics

69
推荐指数
1
解决办法
1773
查看次数

Java泛型 - 使Generic扩展2个接口

你是如何做这项工作的:

public class Frankenstein<T extends IHuman, IMonster>{
}
Run Code Online (Sandbox Code Playgroud)

没有制作

public interface Weirdo extends Ihuman, IMonster{
}
Run Code Online (Sandbox Code Playgroud)

编辑

为什么这不起作用?

public <T> void mapThis(
        Class<? extends MyClass<T>> key, Class<? extends T & IDisposable> value) {

}
Run Code Online (Sandbox Code Playgroud)

我将编译器消息标记Class<? extends T & IDisposable>为错误.

java generics interface class

43
推荐指数
2
解决办法
5万
查看次数

如何编写泛型方法来查找最大元素并调用该方法?

当我试图通过泛型教程Q&A解决练习时,我的答案略有不同

我的答案

public static <T extends Comparable<? super T>>
    T max(List<? extends T> list, int begin, int end) //Option1

public static <T extends Comparable<T>>
    T max(List<? extends T> list, int begin, int end) //Option2
Run Code Online (Sandbox Code Playgroud)

从下面引用的答案

所以我的问题是

  • 选项1:如果T extends Object & Comparable<? super T>替换为,会有什么不同吗T extends Comparable<? super T>?不extends Object隐含?

  • 选项2:如果Comparable<? super T>替换为它会有什么不同Comparable<T>吗?如果是这样?

  • Eclipse代码完成List<? extends Comparable<? super Comparable<? super T>>> list;在Ctrl + 1上创建局部变量,max(list, 1, 10); …

java generics list

9
推荐指数
1
解决办法
2167
查看次数

标签 统计

generics ×3

java ×3

class ×1

interface ×1

list ×1