gpt4 book ai didi

java - java泛型的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:24 24 4
gpt4 key购买 nike

拜托,我想知道写作之间的区别

public class Something<T extends Comparable<T>> {// }

public class Something<T extends Comparable> {// }

这将如何影响代码

最佳答案

不同之处在于,在第一种情况下,类型参数 T必须与自身具有可比性,而在第二种情况下 T可以媲美任何东西。一般来说,当一个类C具有可比性,它被宣布实现 Comparable<C>反正。然而,这里有一个例子,说明第一个不起作用但第二个可以:

class C1<T extends Comparable<T>> {  // first case
}

class C2<T extends Comparable> { // second case
}

class A { // some super class
}

class B extends A implements Comparable<A> { // comparable to super class
@Override
public int compareTo(A o) {
return 0;
}
}

现在:

new C1<B>();  // error
new C2<B>(); // works

一般来说,你不应该使用第二种方法;尽可能远离原始类型。另请注意,第二种方法的更好选择是

public class Something<T extends Comparable<? super T>> { /*...*/ }

C1 一起使用将允许 new C1<B>()上面的行也可以编译。

关于java - java泛型的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944582/

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