2014-03-19 3 views
1

내가 게임에 대한 몇 가지 인터페이스를 개발하고 내가 지금까지 다음과 같은 인터페이스 정의에 온에서 클래스를 확장 :유형 인수를 추론하는 방법은 무엇입니까? 인터페이스 선언

  • public interface Player<A extends Action, R extends Result> { }

  • public interface Game<P extends Player<? extends Action, ? extends Result>> { }

을 그러나 지금을 I Game 인터페이스에서 ? extends Result에 액세스하고 싶습니다. 세 가지 일반 유형을에 추가하면됩니다.하지만 정보가 이미 있으므로 필요하지 않습니다. 나는이 같은 <A, R>을 정의 할 수

public interface <A, R> Game<P extends Player<A extends Action, R extends Result>> { }

이 코드는하지만 자바 (자바 8) 법적되지 않습니다 :

는 나는 다음과 같은 일을 할 것입니다.

어떻게해야합니까?

+0

원하는 것은 분명하지 않습니다. 'Game' 인터페이스를 수정하고 있습니까? 그렇다면 인터페이스 이름 앞에 ''이 없습니다. 이것은 자신의 일반적인 매개 변수를 가진 메소드에만 사용됩니다. – chrylis

+0

@chrylis'Player'에서 이미 정보를 올바르게 캡쳐하는 적절한'Game' 인터페이스를 찾으려고합니다. 메소드에서 나중에 사용할 수 있도록 ''유형이 필요합니다. – skiwi

+0

당신은 이미 방법을 알고 있습니다 - 3 가지 일반적인 유형을 선언하십시오. 나는 가능한 다른 방법을 찾지 못한다. –

답변

2

처음에는 "Game에 3 가지 일반 유형"을 추가해야합니다.

제네릭 형식 매개 변수가 선언 될 때 적절한 경계를 만드는 경우이를 사용하여 다른 형식 매개 변수를 정의 할 수 있습니다.

인터페이스 방법으로 AR을 사용할 수있는 가장 좋은 방법입니다.

interface Game<A extends Action, R extends Result, P extends Player<A, R>> { } 
관련 문제