2012-05-27 74 views

回答

7

它正在爲類型參數添加一個約束。它類似於C#中的where子句。

在Java中,你必須:

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout 

哪裏Item是必須繼承或實現類型OverlayItem類型參數。在C#中,這將寫爲:

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem 

您可以看到約束是如何移動到最後,但在其他方面是類似的。這是非常,所以我會建議名稱TItem像這樣:

public class BalloonOverlayView<TItem> : FrameLayout where TItem : OverlayItem 

這有助於明確類型參數和普通類型之間的非常重要的區別。

有關,當你想使用的類型約束這樣的討論,I go into this at length in a previous answer.

2

它是與此相同:

public class BalloonOverlayView<Item> : FrameLayout where Item : OverlayItem 

或無論如何。我沒有VS。 (我在酒店的電腦上)

1

這意味着parametrised型Item必須的OverlayItem

語義的子類,這意味着它使如果它沒有延伸,則無法實例化具有參數化類型的BalloonOverlayView OverlayItem