簡體   English   中英

接口方法應該返回什么類型

[英]What should be return type in interface method

我有兩節課。 Status1Status2

這兩個狀態有一個共同的變量:

protected A a;

和一個不常見的:

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

BStatus1類中的static class

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

CStatus2類中的static class

所以現在我想創建接口Status

在這里我可以添加variable A 現在我需要添加方法getVersion ,它應該返回Status1 / Status2靜態類

protected abstract ?? getVersion();

但我不知道應該有什么樣的return type

我嘗試添加到此接口靜態類和此類返回但沒有成功

“正確的方法”是讓兩個靜態類B和C實現一個公共空interface ,讓我們調用“Versioned”

public interface Versioned{}

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

之后,你可以寫:

 protected abstract Versioned getVersion();

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

我認為Object應該做的伎倆!

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

希望這可以幫助,

干杯

如果Status1.BStatus2.C之間的差異對於對象模型是必不可少的,則可以使Status通用:

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

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

否則,您可以為其他版本類引入接口,如其他答案所示。

一種方法是創建一個接口(讓我們稱之為IVersion )並使兩個版本類實現該接口。 然后getVersion()方法可以返回此接口:

protected abstract IVersion getVersion();

暫無
暫無

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

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