2012-11-05 2 views
3

두 클래스가 있습니다.인터페이스 메소드의 반환 유형은 무엇입니까

protected A a; 

공통 밤은 하나 :

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

BStatus1 클래스

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

내부 static class이다 Status1Status2

두 상태는 하나 개의 변수 공통을 보유 C 그래서 지금은 인터페이스 여기 Status

내가 variable A을 추가 할 수 있습니다를 만들 static class

클래스 Status2의 내부입니다. 지금은 Status1/Status2

protected abstract ?? getVersion(); 

의 내부 정적 클래스를 반환해야합니다 방법 getVersion를 추가해야하지만 return type이 내가이 인터페이스 정적 클래스에 추가하려고

해야한다 무엇을 잘 모릅니다이 클래스 반환하지만,과 succes

답변

1

나는 Object 트릭을해야한다고 생각합니다!

그러나 개체의 모든 입력란에 액세스하는 동안 문제가 발생할 수 있습니다. 따라서 두 상태의 내부 클래스에 의해 구현되는 인터페이스 Version을 제안합니다. 이 도움이

희망,

0

한 가지 방법은 인터페이스를 만드는 것입니다

건배 두 버전의 클래스가 인터페이스를 구현하기 (의이 IVersion를 부르 자). Status1.BStatus2.C의 차이는 개체 모델에 필수적인 경우 Status 제네릭 만들 수

protected abstract IVersion getVersion(); 
1

:

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

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

그렇지 않으면 당신이 인터페이스를 소개 할 수있는 getVersion() 메소드는이 인터페이스를 반환 할 수 있습니다 두 가지 버전 클래스를 제공합니다.

2

"올바른 방법"입니다 호출하자, 두 정적 클래스 B와 C는 일반적인 빈 interface을 구현할 수 있도록하는 것입니다 "버전 화"그 후

public interface Versioned{} 

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

, 당신은 쓸 수 있습니다 :

protected abstract Versioned getVersion(); 

및 B 방법으로 반환 할 수 있습니다.

관련 문제