在Java中,为什么是关键字的instanceof而不是方法?

时间:2015-11-20 10:22:26

标签: java instanceof

在Java中,为什么instanceof是关键字而不是方法?

public static void main(String args[]) {
    Simple1 s = new Simple1();  
    System.out.println(s instanceof Simple); // true
}

4 个答案:

答案 0 :(得分:13)

嗯,方法Class.isInstance ...但基本上它是一个具有特定VM支持的低级操作,因此它有意义成为一个运算符。除此之外,没有必要获得Class引用来进行测试 - 字节码可以更有效地表示操作。

请注意,您可以为 lot 运算符设置相同的情况...为什么我们需要算术运算符而不是调用int x = Integer.add(y, z);?在便利性和性能方面(当然智能JIT可以删除后者)对于拥有运营商都有好处。

答案 1 :(得分:2)

“instanceof”是Java中的运算符,用于比较对象 到指定的类型。它作为运算符提供,以便您可以编写更清晰的表达式。

同样isInstance是方法存在

答案 2 :(得分:0)

  1. instanceof keyword是一个二元运算符,用于测试对象(实例)是否是给定Type的子类型。

  2. 如果表达式的左侧是右侧类名的实例,则它是一个返回true的运算符。

  3. 拥有它的唯一目的是在执行任何特定于对象的操作之前测试对象类型,并且二进制使其变得非常简单。也有一种方法,但它很少使用。 例如,您可以使用它来编写一个方法来检查两个任意类型的对象是否与赋值兼容,如:

    public boolean areObjectsAssignable(Object left, Object right) {
        return left.getClass().isInstance(right);
    } 
    

    请参阅此问题以获取更多想法,

    Java isInstance vs instanceOf operator

答案 3 :(得分:0)

instanceof还检查Object是否继承了给定的类 因此,如果你有:public class Person extends Human,如果你写

,你将获得true
Person p = new Person();
if(p instanceof Human)