2012-11-20 1 views
0

Java 클래스 "추상 자격 증명"이 주어지며 "EmailPassword"/ "OAuth"클래스가 파생됩니다. 적절한 구현의 EmailPasswordStorage 및 OAuthStorage와종속 형식에 대한 스칼라 및 형식 검사

및 인터페이스 CredentialsStorage는

내가 트리플와 배열의 일종 만들 필요가

: 저장, 유효한 자격 증명, 잘못된 자격 증명)

그래서 나는이 시작 :

type T <: Credentials 

type S <: CredentialsStorage[T] 

private var testData: Array[(S, T, T)] = Array(
    (emailStorage, validEmailPasswd, new EmailPasswordCredentials("1", "2")), 
    (oAuthStorage, validAuthToken, new OAuthCredentials("invalid auth token", OAuthService.FACEBOOK)) 
) 

그러나이 컴파일되지 않습니다

error: type mismatch; 
found : storage.EmailPasswordStorage[credentials.EmailPassword] 
required: CredentialsStorageTest.this.S 
(emailStorage, validEmailPasswd, new EmailPasswordCredentials("1", "2")), 

이 문제를 어떻게 해결할 수 있습니까? 여기에 종속/실존 유형의 올바른 정의는 무엇입니까?

type T[A] = (CredentialsStorage[A],A,A) 

val testData : Array[T[_ <: Credentials]] = ... 

답변

2

type T <: Credentials는 추상 형식을 정의

UPD 나는 튜플 형식 자체의 정의와 문제를 해결했다. 이 인스턴스에 T이 무엇인지 정의하지 않았습니다. type T = credentials.EmailPasswordtype S = storage.EmailPasswordStorage[T]을 포함 해보세요.