繁体   English   中英

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

[英]How to declare method signature in an interface to accept an unknown type variable?

我正在创建几个不同的类,每个类都与不同的API进行交互。 我为每个继承的类创建了一个接口,但是接口中的一个方法可以采用几种不同的数据类型,具体取决于正在实现的API。 是否可以为该方法定义一个未知类型?

现在我只是将它声明为一个Object并在实现中将其强制转换。

接口:

public interface UDSession {

    public void authenticate(String user) throws UDException;

    public void linkAccount(Object authInfo) throws UDException;

}

方法实现(只是签名和第一行):

Dropbox的:

    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类型参数之外,还有更好的方法。 有任何想法吗?

谢谢。

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

public interface UDSession<T> {

    public void authenticate(String user) throws UDException;

    public void linkAccount(T authInfo) throws UDException;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM