难道Class<SomeObject>只有一个实例是SomeObject.class?
这是一个功能
void f(Class<SomeObject> arg)
是否有可能只传递SomeObject.class编译时错误?
是.
如文档中所述:
返回此Object的运行时类.返回的Class对象是由所表示的类的静态同步方法锁定的对象.
但是对于这种方法,void f(Class<SomeObject> arg)你可以传递一些东西void f(Class<? extends SomeObject> arg).看看这个问题.
传递Class<? extends SomeObject arg你可以做这样的事情:
myMethod(Class<? extends BasicObject> clazz)
{
if (!clazz.isInstance(CodeObject))
{
(do something different)
}
...
}
Run Code Online (Sandbox Code Playgroud)
您始终可以传递null,但除此之外,唯一有效的参数将是SomeObject.class加载与ClassLoader包含 的类相同的参数void f(Class<SomeObject> clazz)。
您可以有多个不同的 实例SomeObject.class,但它们需要由不同的类加载器加载(否则它们将不是单独的实例,但所有实例都将引用同一个 Class 对象)。
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |