我有一个方法来为接口类添加实现类'对象,我想把它作为通用类。 实现类还扩展了类X
public abstract class X<T>{...}
public interface InterfaceA{...}
public class A extends X implements InterfaceA{...}
现在,我的方法是:
public <S, <T extends X<S>> void add(Class<S> clazz, T object){...}
但是我没有在X上使用类型参数,它仅适用于上述方法。有没有一种方法可以让X没有类型参数,并且在方法'add'中仍然有编译时验证吗?
由于
修改
我认为我的问题不明确。请查看以下示例代码:
public interface I {}
public abstract class X {}
public class A extends X implements I {}
public class B implements I {}
public class C extends X {}
public class Main {
public static void main(String[] args) {
add(I.class, new A()); // uses first method
add(I.class, new B()); // uses second method
add(I.class, new C()); // uses first method
}
public static <P, T extends P> void add(Class<P> c, T object) {} //No
public static <P, T extends X> void add(Class<P> c, T object) {} //No
}
我需要一个'add'方法,只接受A的实例,而不是B不是C的。 上述方法签名都不符合我的要求
答案 0 :(得分:1)
如果您不关心X
的类型参数,只需将其设为Object
:
public class A extends X<Object> implements InterfaceA{...}
因此该方法适用于任何事情。
答案 1 :(得分:0)
我相信您可以删除X上的类型,但仍然会以下列方式获取编译时错误。当然,如果这不符合您的要求,那么更多的背景会更有帮助。
{{1}}