如何在接受A.class或扩展A.class的方法中创建参数?
我正在创建将执行方法" foe()"在A.class中。
这就是为什么我需要A.class或扩展A.class的参数。
class B extends A{}
//And
abstract class A{}
这对A.class不起作用,但适用于B.class:
public void test(Class<? extends A> arg){}
这个,ofc仅适用于A.class,但不适用于B.class:
public void test(A arg){}
感谢您的帮助! :)
答案 0 :(得分:2)
最后努力让你得到这个:
您现在有以下选项。
public void testClass(Class<? extends A> arg) {}
public void testInstance(A arg) {}
...
testInstance(new A()); // works
testInstance(new B()); // works
testClass(A.class); // works
testClass(B.class); // works
最后但并非最不重要的是,您可以使用泛型:
public <T extends A> void testInstanceGen(T arg) {}
public <T extends A> void testClassGen(Class<T> arg) {}
...
testInstanceGen(new A()); // works
testInstanceGen(new B()); // works
testClassGen(A.class); // works
testClassGen(B.class); // works
我很乐意在OP中明确不同方法的功能差异后立即将其删除 - 现在因为它超出了评论而被发布了。