[英]How to declare a variable according to an unknown List type of the input variable in Java?
[英]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.