Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java泛型:接受类或接口_Java_Generics - Fatal编程技术网

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 {
    }
}