2012-11-05 65 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.

相关问题