1

我正在创建几个不同的类,每个类都与不同的 API 交互。我为每个类创建了一个接口来继承,但是接口中的一个方法可以采用几种不同的数据类型,具体取决于正在实现的 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类型参数更好的方法来做到这一点。有任何想法吗?

谢谢。

4

1 回答 1

3

根据您实例化类的方式,您可以尝试:

public interface UDSession<T> {

    public void authenticate(String user) throws UDException;

    public void linkAccount(T authInfo) throws UDException;

}
于 2012-07-17T05:28:22.803 回答