我在Java中遇到泛型类的问题,我不知道如何解决它。我几天前开始用java和泛型编程,所以这可能是一个众所周知的问题。我的班级定义是这样的:
public Class LocalAuthCommand<T extends LocalAuth> {
public LocalAuthCommand() {
...
}
public String execute() throws CustomException {
String result = super.execute();
T obj = T.unMarshall(result);
}
}
unMarshall是一个在LocalAuth的所有子类中实现的静态方法。所有T类都实现了这个方法,但我不知道如何让Java知道unMarshall确实存在于T中的静态方法。任何想法如何解决这个问题?
谢谢!
答案 0 :(得分:0)
T
在运行时被删除,因此T
的引用会在调用LocalAuth
时被边界类unMarshall
替换。我可以想出两种解决方法:
Class
unMarshall
并反复拨打电话。execute
抽象为每个LocalAuthCommand
创建T
的具体子类,以便在编译时知道要为每个子类调用的确切unMarshall
方法时间。答案 1 :(得分:0)
在LocalAuth中,您可以拥有public static String unMarshall(String result)
或public abstract String unMarshall(String result)
。你不能拥有抽象和静态的方法。