[英]Java generics extends syntax
有人可以向我解釋這個類定義聲明嗎
public class BinarTree<Type extends Comparable<Type>> {...
我完全了解它的目的,但不了解語法。 據我說應該是
public class BinarTree<Type extends Comparable> {...
什么意思
<Type extends Comparable<Type>> ?
^^^^
Comparable
是通用接口。 其背后的原因是避免在Comparable#compareTo(...)
方法中強制轉換為特定類型。
因此,如果Type extends Comparable<Type>
這意味着該Type
將派生帶有簽名的方法
public int compareTo(Type t1)
代替
public int compareTo(Object o1)
接口Comparable
本身就是一個模板。 因此,您所擁有的是帶有參數的模板,該參數必須擴展模板。 特別是它必須擴展一個模板,該模板接收擴展類作為參數。
Comparable是用於接口的模板,這些接口實現順序關系並實現int compareTo(TYPE o)
。 因此定義一個類是正常的:
class FooBar implements Comparable<FooBar> {...
二叉樹不適用於已聲明的類:
class FooBar implements Comparable<Snafu> {...
這是因為您將能夠將FooBar
與Snafu
進行比較,但不能相互比較。
在
public class BinarTree<Type extends Comparable>{...
Type
可以是任何Comparable
,也可以是Comparable<Integer>
或Comparable<OtherType>
。 如果這是您想要的,那就很好。 大多數時候,我認為您知道要精確比較的內容,因此將Comparable
改為Comparable<Type>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.