我正在创建几个不同的类,每个类都与不同的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
类型参数之外,还有更好的方法。有什么想法吗?
感谢。
答案 0 :(得分:3)
根据您实例化课程的方式,您可以尝试:
public interface UDSession<T> {
public void authenticate(String user) throws UDException;
public void linkAccount(T authInfo) throws UDException;
}