Java - 如何在接受A.class或扩展A.class的类的方法中创建参数?

时间:2017-11-11 17:21:44

标签: java eclipse class

如何在接受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){}

感谢您的帮助! :)

1 个答案:

答案 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中明确不同方法的功能差异后立即将其删除 - 现在因为它超出了评论而被发布了。