• When to use Class.isInstance() & when to use instanceof operator?


    I think the official documentation gives you the answer to this one (albeit in a fairly nonspecific way):

    This method is the dynamic equivalent of the Java language instanceof operator.

    I take that to mean that isInstance() is primarily intended for use in code dealing with type reflection at runtime. In particular, I would say that it exists to handle cases where you might not know in advance the type(s) of class(es) that you want to check for membership of in advance (rare though those cases probably are).

    For instance, you can use it to write a method that checks to see if two arbitrarily typed objects are assignment-compatible, like:

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

    In general, I'd say that using instanceof should be preferred whenever you know the kind of class you want to check against in advance. In those very rare cases where you do not, use isInstance() instead.

    For instanceof you need to know the exact class at compile time.

    if(foo instanceofThisClassIKnowRightNow)...

    For isInstance the class is decided at run time. (late binding) e.g.

    if(someObject.getClass().isInstance(foo))...
  • 相关阅读:
    JZOI 4020 Revolution
    JZOJ 4018 Magic
    JZOJ 4017 逃跑
    JZOJ 4016 圈地为王
    JZOJ 4015 数列
    JZOJ 3960 鸡腿の出行
    BZOJ 5005 & JZOI 3959 鸡腿の乒乓
    GCJ2009B&JZOJ 4033 Min Perimeter
    jzoj 3948 Hanoi 塔
    [纯符][纯粹的无聊] 神奇的递推式
  • 原文地址:https://www.cnblogs.com/savagemorgan/p/3721940.html
Copyright © 2020-2023  润新知