2012-12-02 33 views
2
class Pair<A,B> { 
    final A first; 
    final B sec; 

    Pair(A f, B s){ 
     this.first = f; 
     this.sec = s; 
    } 
} 

有沒有辦法確保A和B是不可變的類型?如何確保類型參數不可變

+0

不是,它不是。因爲並不是所有的不可變對象都有共同的祖先。 –

回答

4

不可以。沒有辦法識別,更不用說綁定,類型是不可變的。

您可以創建一個標記界面(一個沒有方法的界面,如Serializable),用於項目中以識別不可變類,並讓您的團隊遵守它。

例如:

interface Immutable {} 

class Pair<A extends Immutable, B extends Immutable> { 
} 
2

號事實上,在語言完全沒有概念或「可變」或「不變」的類型。 「不可變」僅僅是一個術語,我們用它來描述一種類型,它不會提供任何方法或公共字段,允許您更改任何內部狀態。除此之外,「可變」和「不可變」類型的工作方式沒有區別。