如何在接口中声明方法签名以接受未知类型变量?

时间:2012-07-17 05:24:36

标签: java

我正在创建几个不同的类,每个类都与不同的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类型参数之外,还有更好的方法。有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:3)

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

public interface UDSession<T> {

    public void authenticate(String user) throws UDException;

    public void linkAccount(T authInfo) throws UDException;

}