Class <SomeObject>只有一个实例吗?

Ale*_*tin 5 java

难道Class<SomeObject>只有一个实例是SomeObject.class

这是一个功能

void f(Class<SomeObject> arg)

是否有可能只传递SomeObject.class编译时错误?

Vic*_*tor 8

是.

文档中所述:

返回此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)


Kay*_*man 3

您始终可以传递null,但除此之外,唯一有效的参数将是SomeObject.class加载与ClassLoader包含 的类相同的参数void f(Class<SomeObject> clazz)

您可以有多个不同的 实例SomeObject.class,但它们需要由不同的类加载器加载(否则它们将不是单独的实例,但所有实例都将引用同一个 Class 对象)。