编写方法包含 InstanceOf(Class<? 扩展 SuperClassName>)



我写了一对夫妇

我想编写一种方法包含(1(中的这样的方法但是我遇到了"无法将CLS分解为类型"的错误,我已经使用(2(。

,但我根本不喜欢它。您对编写此方法更加优雅和失败有任何建议吗?

(1(

    private boolean containsInstanceof(Class<?extends GameObject> cls) {
    return this.getFirst() instanceof cls || this.getSecond() instanceof cls;
}

(2(

    private boolean containsInstanceof(Class<?extends GameObject> cls) {
    return this.getFirst().getClass().getName().equals(cls.getName()) ||
           this.getSecond().getClass().getName().equals(cls.getName());
}

期望(1(中没有错误,但不能将CLS解析为类型。

您必须使用Class.isInstance方法:

此方法是java语言实例Operator的动态等效。

return cls.isInstance(this.getFirst()) || cls.isInstance(this.getSecond());

最新更新