标签: instanceof

instanceof - 不兼容的条件操作数类型

以下编译正常:

  Object o = new Object();
  System.out.println(o instanceof Cloneable);
Run Code Online (Sandbox Code Playgroud)

但这不是:

  String s = new String();
  System.out.println(s instanceof Cloneable);
Run Code Online (Sandbox Code Playgroud)

抛出编译器错误.

问题是什么?

java instanceof cloneable

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

Java - null instanceof Object的计算结果为true和false

当我编译并运行此代码时:

public class Testing {
    public static void main(String... args) {
        Object obj = null;
        if (obj instanceof Object) {
            System.out.println("returned true"); 
        } else {
            System.out.println("returned false"); 
        }
        System.out.println(" " + obj instanceof Object);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在命令行上看到了这个:

C:\Users\xxxxxx\Desktop>java Testing
returned false
true
Run Code Online (Sandbox Code Playgroud)

不应该"null instanceof someType"总是返回false?

java instanceof

51
推荐指数
1
解决办法
6165
查看次数

PHP检查DateTime的实例?

在我的DateTime类中,这是检查对象是否是类的实例的唯一方法吗?

$cls = ReflectionClass("DateTime");
if (! $cls->isInstance( (object) $var ) ) {
    // is not an instance
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎有点沉重.

php class instanceof instance isinstance

48
推荐指数
4
解决办法
5万
查看次数

如果父项的实例,instanceof是否返回true?

我有一个课程Child延伸Parent.

Parent child = new Child();

if (child instanceof Parent){
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

这会返回true还是false,为什么?

java oop polymorphism inheritance instanceof

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

Javascript中isPrototypeOf和instanceof有什么区别?

在我自己的一些旧代码中,我使用以下代码:

Object.prototype.instanceOf = function( iface )
{
 return iface.prototype.isPrototypeOf( this );
};
Run Code Online (Sandbox Code Playgroud)

然后我做(例如)

[].instanceOf( Array )
Run Code Online (Sandbox Code Playgroud)

这有效,但似乎以下情况也是如此:

[] instanceof Array
Run Code Online (Sandbox Code Playgroud)

现在,这肯定只是一个非常简单的例子.因此,我的问题是:

是否a instanceof b 总是一样的b.prototype.isPrototypeOf(a)

javascript inheritance prototype instanceof

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

instanceof如何在接口上工作

instanceof可用于测试对象是否是给定类的直接或下降实例.instanceof即使接口无法像类一样实例化,也可以与接口一起使用.任何人都可以解释一下instanceof有效

java interface instanceof

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

如何从GDB中指向基类的指针确定某个对象是否是某个派生C++类的实例?

我正在用GDB调试一个C++程序.

我有一个指向某个类的对象的指针.指针被声明为某些超类,它由几个子类扩展.

对象中没有字段指定此对象的精确类类型,但是定义了一些虚函数(例如bool is_xxx())以在运行时告知类类型.

有没有办法在不调用这些虚函数的情况下告诉GDB中对象的精确类类型.当程序是多线程的时,在GDB中调用这些函数可能会产生令人困惑的结果.

c++ types gdb instanceof superclass

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

如何有效地检查变量是否是数组或对象(在NodeJS和V8中)?

在NodeJS和V8中有没有办法有效地检查变量是Object还是Array?

我正在为MongoDB和NodeJS编写一个Model,并遍历对象树,我需要知道对象是简单的(Number,String,...)还是复合(Hash,Array).

似乎V8有快速内置Array.isArray,但如何检查对象是否是一个对象?我的意思是复杂的对象,如哈希{}或类的实例,不是这样的new String()

通常它可以这样做:

Object.prototype.toString.call(object) == "[object Object]"
Run Code Online (Sandbox Code Playgroud)

或这个:

object === Object(object)
Run Code Online (Sandbox Code Playgroud)

但似乎这种操作并不便宜,也许有一些效率更高?如果它不是通用的并且不适用于所有引擎,那就没关系,我只需要在V8上工作.

javascript v8 typeof instanceof node.js

42
推荐指数
8
解决办法
11万
查看次数

检查对象是否是类的实例(但不是其子类的实例)

对于这个例子:

public class Foo{}

public class Bar extends Foo{}

....

void myMethod(Foo qux){
   if (checkInstance(qux,Foo.class)){
     ....
   }
}
Run Code Online (Sandbox Code Playgroud)

如何检查是否qux是Foo的实例(但不是foo的子类的实例)?那是:

  • checkInstance(qux,让Foo.class)=真
  • checkInstance(qux,Bar.class)=假

instanceof这张支票有什么样的陈述吗?或者我应该使用qux.getClass().equals(Foo.class)

java instanceof

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

如何在实施工厂设计模式时避免"instanceof"?

我正在尝试实现我的第一个工厂设计模式,我不确定在将工厂制造的对象添加到列表时如何避免使用instanceof.这就是我想要做的:

for (ABluePrint bp : bluePrints) {
    AVehicle v = AVehicleFactory.buildVehicle(bp);
    allVehicles.add(v);

    // Can I accomplish this without using 'instanceof'?
    if (v instanceof ACar) {
        cars.add((ACar) v);
    } else if (v instanceof ABoat) {
        boats.add((ABoat) v);
    } else if (v instanceof APlane) {
        planes.add((APlane) v);
    }
}
Run Code Online (Sandbox Code Playgroud)

从我在SO上看到的,使用'instanceof'是代码气味.有没有更好的方法来检查工厂创建的车辆类型而不使用'instanceof'?

我欢迎任何关于我的实施的反馈/建议,因为我不确定我是否正确地采用了这种方式.

完整示例如下:

import java.util.ArrayList;

class VehicleManager {

    public static void main(String[] args) {

        ArrayList<ABluePrint> bluePrints = new ArrayList<ABluePrint>();
        ArrayList<AVehicle> allVehicles = new ArrayList<AVehicle>();
        ArrayList<ACar> cars = new ArrayList<ACar>();
        ArrayList<ABoat> boats = new …
Run Code Online (Sandbox Code Playgroud)

java design-patterns factory instanceof factory-pattern

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