簡體   English   中英

Java泛型擴展語法

[英]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> {...

這是因為您將能夠將FooBarSnafu進行比較,但不能相互比較。

public class BinarTree<Type extends Comparable>{...

Type可以是任何Comparable ,也可以是Comparable<Integer>Comparable<OtherType> 如果這是您想要的,那就很好。 大多數時候,我認為您知道要精確比較的內容,因此將Comparable改為Comparable<Type>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM