我创建了几个不同的类,每个类都与不同的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;
}
我也试过definin克它在界面为:Class<?>
和方法签名实现为限定它:Class<WebAuthSession.WebAuthInfo>
。但是这不起作用。
我们有了一个更好的办法做到这一点比使用Object
类型参数。有任何想法吗?
谢谢。
没有泛型(类是无类型),'Object' *意味着*“未知类型” – Bohemian 2012-07-17 05:38:08
嗯,是的,我想我的问题是更多的是想知道这是否是好的做法?在这种情况下,泛型没有意义(至少对我来说)是没有意义的,因为我没有看到派生类被键入的原因。有没有这样做的“更好的做法”,或者使用“Object”可以接受? – PseudoPsyche 2012-07-17 22:24:37