それぞれが異なる API と対話するために、いくつかの異なるクラスを作成しています。継承元のクラスごとにインターフェイスを作成しましたが、インターフェイスのメソッドの 1 つは、実装されている API に応じていくつかの異なるデータ型を受け取ることができます。そのメソッドが取り込む未知の型を定義することは可能ですか?
今のところ、それを として宣言しObject
、実装内でキャストしているだけです。
インターフェース:
public interface UDSession {
public void authenticate(String user) throws UDException;
public void linkAccount(Object authInfo) throws UDException;
}
メソッドの実装 (署名と最初の行のみ):
ドロップボックス:
public void linkAccount(Object authInfo) throws UDException {
WebAuthSession.WebAuthInfo info = (WebAuthSession.WebAuthInfo) authInfo;
}
グーグル:
public void linkAccount(Object authInfo) throws UDException {
GoogleOAuthParameters info = (GoogleOAuthParameters) authInfo;
}
また、インターフェイスで次のようClass<?>
に定義し、メソッド シグネチャの実装で次のように定義しようとしましたClass<WebAuthSession.WebAuthInfo>
。しかし、これはうまくいきませんでした。
Object
型パラメーターを使用するよりも、これを行うためのより良い方法が必要です。何か案は?
ありがとう。