传递一个扩展另一个类的类

lig*_*igi 5 java class

我把我想做的事情煮成以下最小代码:

public class TestClass {

    class Class2Extend {
    }

    class Foo {
        public Foo(Class<Class2Extend> myClass) {

        }
    }

    class Bar extends Class2Extend{

    }

    public TestClass() {
        new Foo(Class2Extend.class); // works fine 
            //new Foo(Bar.class); -> fails even though Bar extends Class2Extend - but I want something like this to have nice code
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用一个界面,但这样会更干净.任何人都可以给我一个关于这个问题的提示/技巧?

pca*_*cao 13

改成:

class Foo {
    public Foo(Class<? extends Class2Extend> myClass) {

    }
}
Run Code Online (Sandbox Code Playgroud)

当你说你的参数类型Class<Class2Extend>Java与该参数类型完全匹配时,而不是与任何子类型匹配时,你必须明确指定你想要任何扩展Class2Extend的类.