我见过这样的代码:
void foo(Class<? extends SomeInterface> clazz)
我有一个类:
class ClassA implements SomeInterface
当我尝试时:
ClassA a = new ClassA();
foo(a);
Run Code Online (Sandbox Code Playgroud)
Eclipse给出了"方法不适用"之类的东西.
我错过了什么?
该foo方法将Class对象作为参数,而不是该类的实例.
请尝试使用类文字:
foo(ClassA.class);
Run Code Online (Sandbox Code Playgroud)
ClassA.class是类的类文字ClassA,它是一个Class<ClassA>适合参数描述的类Class<? extends SomeInterface>.
为了foo(a);编译,签名foo会有所不同:
void foo(SomeInterface bar)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |