java泛型:接受类或接口
假设我有:java泛型:接受类或接口,java,generics,Java,Generics,假设我有: public class Components<T> extends TupleList<Class<T>, String> { private static final long serialVersionUID = 1L; public void add(Class<T> classe, String name) { this.add(new Tuple<Class<T>, St
public class Components<T> extends TupleList<Class<T>, String> {
private static final long serialVersionUID = 1L;
public void add(Class<T> classe, String name) {
this.add(new Tuple<Class<T>, String>(classe, name));
}
}
公共类组件扩展了TupleList{
私有静态最终长serialVersionUID=1L;
public void add(类classe,字符串名){
add(新元组(classe,name));
}
}
我希望能够做到以下几点:
Components<IFilter> engines=new Components<IFilter>(){{
add(FilterEngineIdentity.class, "Identity");
}};
组件引擎=新组件(){{
添加(FilterEngineIdentity.class,“Identity”);
}};
其中
FilterEngineIdentity实现IFilter
。如果不将类组件绑定到更具体的类定义,我将如何实现这一点?编辑:它可以工作!请参阅底部添加的我的测试。
下面的方法行吗
Class<? extends T>
Class现在我了解了您要查找的内容,我认为这一点更清晰、更安全:
public interface Interface {
}
public class Test<T> {
public <K extends T> void add(Class<K> x) {
}
public static void x() {
Test<Interface> t = new Test<Interface>();
t.add(Implementation.class);
}
public static class Implementation implements Interface {
}
}
公共接口{
}
公开课考试{
公共无效添加(x类){
}
公共静态void x(){
测试t=新测试();
t、 add(Implementation.class);
}
公共静态类实现实现接口{
}
}
no的可能重复不是重复,我在上一个问题中的请求不够具体。你真的能做这个类TupleList{}吗?
public interface Interface {}
public class Test<T>
{
public void add(Class<? extends T> x)
{
}
public static void x()
{
Test<Interface> t = new Test<Interface>();
t.add(Implementation.class);
}
public static class Implementation implements Interface{}
}
public interface Interface {
}
public class Test<T> {
public <K extends T> void add(Class<K> x) {
}
public static void x() {
Test<Interface> t = new Test<Interface>();
t.add(Implementation.class);
}
public static class Implementation implements Interface {
}
}