2012-11-05 66 views
3

我有兩個類。 Status1Status2接口方法中應該返回什麼類型

這兩種狀態具有一個可變共同:

protected A a; 

和一個其心不是共同:

class Status1 { 
    protected A a; 
    protected ListStatus1.B version; 
} 

Bstatic classStatus1

class Status2 { 
    protected A a; 
    protected Status2.C version; 
} 

的內部Cstatic class內的Status2

所以現在我想創建界面Status

在這裏我可以添加variable A。現在我需要添加方法getVersion應返回的Status1/Status2

protected abstract ?? getVersion(); 

內部靜態類,但我不知道是什麼return type應該有

我嘗試添加到這個接口的靜態和這個類回報,但與沒有成功

回答

1

我認爲Object應該做的伎倆!

但是,在訪問對象的任何字段時可能會遇到問題。因此,我建議你有一個接口Version,它由兩個狀態的內部類實現。

希望這有助於

乾杯

0

一種方法是創建一個接口(姑且稱之爲IVersion),使這兩個版本的類實現該接口。然後getVersion()方法可以返回此接口:

protected abstract IVersion getVersion(); 
1

如果Status1.BStatus2.C之間的區別是你的對象模型至關重要,可以使Status通用:

public interface Status<V> { 
    public V getVersion(); 
} 

public class Status1 implements Status<Status1.B> { 
    public Status1.B getVersion() { ... } 
    ... 
} 

否則,您可以引入一個接口兩個版本類,正如其他答案所建議的。

2

「正道」,是讓兩個靜態類B和C實現一個共同的空interface,讓我們稱之爲是「版本化」

public interface Versioned{} 

static class B implements Versioned{ 
... 
} 
static class C implements Versioned{ 
... 
} 

之後,你可以寫:

protected abstract Versioned getVersion(); 

並且您的方法將被允許返回B或C.

相關問題