标签: instanceof

为什么不能将"Class"变量传递给instanceof?

为什么这段代码不能编译?

    public boolean isOf(Class clazz, Object obj){
        if(obj instanceof clazz){
            return true;
        }else{
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么我不能将类变量传递给instanceof

java class instanceof

81
推荐指数
3
解决办法
3万
查看次数

测试对象是否是参数类型的实例

有没有办法确定对象是否是泛型类型的实例?

public <T> test(Object obj) {
    if (obj instanceof T) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.还有其他选择吗?就像我想使用Java反射来实例化一个类然后检查以确保它是通用类型T.

java generics instanceof

77
推荐指数
4
解决办法
6万
查看次数

如何在运行时检查子类是否是类的实例?

在Android应用程序测试套件中,我有一个这样的类,其中B是一个视图:

public class A extends B {
... etc...
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个可能包含A对象的视图对象列表,但在这种情况下我只关心它们是子类还是"实例" B.我想做点什么:

ArrayList<View> viewList = getViews();
Iterator<View> iterator = viewList.iterator();
while (iterator.hasNext() && viewList != null) {
    View view = iterator.next();
    if (view.getClass().isInstance(B.class)) {
        // this is an instance of B
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当if遇到一个A对象时,它不会评估为"实例B".有办法做isSubclassOf什么吗?

java subclass instanceof

68
推荐指数
4
解决办法
12万
查看次数

如何在Dart中执行运行时类型检查?

飞镖规格说明:

已知类型信息反映了运行时对象的类型,并且可能始终通过动态类型检查构造(其他语言中的instanceOf,casts,typecase等的类比)来查询.

听起来不错,但是没有instanceof类似的操作员.那么我们如何在Dart中执行运行时类型检查?有可能吗?

dynamic instanceof dart dart-mirrors

64
推荐指数
8
解决办法
4万
查看次数

检查类是否为java.lang.Enum

我想知道一个班级是否是一个Enum,但我想我错过了一些东西:

if (test.MyEnum.class instanceof Enum<?>.class)
 obj = resultWrapper.getEnum(i, test.MyEnum.class);
else 
 obj = resultWrapper.getObject(i);
Run Code Online (Sandbox Code Playgroud)

它给我一个错误,说Enum.class无效.那我怎么能检查一个类是否是一个枚举?我很确定有可能确定,我只是无法得到它.

谢谢

java enums instanceof

63
推荐指数
2
解决办法
4万
查看次数

在Java中避免'instanceof'

我有以下(可能是常见的)问题,现在绝对让我困惑:

有几个生成的事件对象扩展了抽象类Event,我想将它们分成Session Bean,比如

public void divideEvent(Event event) {
    if (event instanceof DocumentEvent) {
        documentGenerator.gerenateDocument(event);
    } else if (event instanceof MailEvent) {
        deliveryManager.deliverMail(event);
        ...
    }
    ...

}
Run Code Online (Sandbox Code Playgroud)

但是将来可能会有两种以上的事件类型,所以if-else将会很长并且可能无法读取.此外,我认为instanceof在这种情况下并不是真正的"最佳实践".

我可以在Event类型中添加一个抽象方法并让它们自行划分但是我必须在每个实体中注入特定的会话Bean.

是否有任何暗示可以为这个问题实现"漂亮"的解决方案?

谢谢你的帮助!

java oop instanceof

63
推荐指数
3
解决办法
9577
查看次数

被认为是不好的做法吗?如果是这样,在什么情况下仍然更可取?

多年来,我尽力避免instanceof.在适用的地方使用多态或访问者模式.我认为在某些情况下它只是简化了维护...是否还有其他一些应该注意的缺点?

但我确实在Java库中看到它,所以我认为它有它的位置?在什么情况下更可取?难道不可避免吗?

java instanceof

62
推荐指数
4
解决办法
3万
查看次数

检查流中的instanceof

我有以下表达式:

scheduleIntervalContainers.stream()
        .filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime())
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

... scheduleIntervalContainers元素类型在哪里ScheduleContainer:

final List<ScheduleContainer> scheduleIntervalContainers
Run Code Online (Sandbox Code Playgroud)

是否可以在过滤器之前检查类型?

java instanceof java-8 java-stream

62
推荐指数
3
解决办法
5万
查看次数

为什么TypeScript中的'instanceof'给我错误"'Foo'只引用一个类型,但在这里被用作值."?

我写了这段代码

interface Foo {
    abcdef: number;
}

let x: Foo | string;

if (x instanceof Foo) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是TypeScript给了我这个错误:

'Foo' only refers to a type, but is being used as a value here.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我认为instanceof可以检查我的值是否具有给定类型,但TypeScript似乎不喜欢这样.

javascript instanceof typescript

60
推荐指数
2
解决办法
4万
查看次数

否定的实例

否定instanceof的正确格式是什么?

if ( ! $a instanceof stdClass)
Run Code Online (Sandbox Code Playgroud)

要么

if ( ! ($a instanceof stdClass) ) 
Run Code Online (Sandbox Code Playgroud)

我已经说服自己后者是正确的方式,可能是几年前阅读一篇博客文章后,但经过一些命令行测试后,它们似乎都是等价的.吗?

php instanceof

55
推荐指数
2
解决办法
1万
查看次数