2015-09-07 11:44:36 -06:00
|
|
|
|
// typeinfo/FamilyVsExactType.java
|
2015-06-15 17:47:35 -07:00
|
|
|
|
// <20>2015 MindView LLC: see Copyright.txt
|
|
|
|
|
// The difference between instanceof and class
|
|
|
|
|
package typeinfo;
|
|
|
|
|
import static com.mindviewinc.util.Print.*;
|
|
|
|
|
|
|
|
|
|
class Base {}
|
|
|
|
|
class Derived extends Base {}
|
|
|
|
|
|
|
|
|
|
public class FamilyVsExactType {
|
|
|
|
|
static void test(Object x) {
|
|
|
|
|
print("Testing x of type " + x.getClass());
|
|
|
|
|
print("x instanceof Base " + (x instanceof Base));
|
|
|
|
|
print("x instanceof Derived "+ (x instanceof Derived));
|
|
|
|
|
print("Base.isInstance(x) "+ Base.class.isInstance(x));
|
|
|
|
|
print("Derived.isInstance(x) " +
|
|
|
|
|
Derived.class.isInstance(x));
|
|
|
|
|
print("x.getClass() == Base.class " +
|
|
|
|
|
(x.getClass() == Base.class));
|
|
|
|
|
print("x.getClass() == Derived.class " +
|
|
|
|
|
(x.getClass() == Derived.class));
|
|
|
|
|
print("x.getClass().equals(Base.class)) "+
|
|
|
|
|
(x.getClass().equals(Base.class)));
|
|
|
|
|
print("x.getClass().equals(Derived.class)) " +
|
|
|
|
|
(x.getClass().equals(Derived.class)));
|
|
|
|
|
}
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
test(new Base());
|
|
|
|
|
test(new Derived());
|
|
|
|
|
}
|
2015-09-07 11:44:36 -06:00
|
|
|
|
}
|
|
|
|
|
/* Output:
|
2015-06-15 17:47:35 -07:00
|
|
|
|
Testing x of type class typeinfo.Base
|
|
|
|
|
x instanceof Base true
|
|
|
|
|
x instanceof Derived false
|
|
|
|
|
Base.isInstance(x) true
|
|
|
|
|
Derived.isInstance(x) false
|
|
|
|
|
x.getClass() == Base.class true
|
|
|
|
|
x.getClass() == Derived.class false
|
|
|
|
|
x.getClass().equals(Base.class)) true
|
|
|
|
|
x.getClass().equals(Derived.class)) false
|
|
|
|
|
Testing x of type class typeinfo.Derived
|
|
|
|
|
x instanceof Base true
|
|
|
|
|
x instanceof Derived true
|
|
|
|
|
Base.isInstance(x) true
|
|
|
|
|
Derived.isInstance(x) true
|
|
|
|
|
x.getClass() == Base.class false
|
|
|
|
|
x.getClass() == Derived.class true
|
|
|
|
|
x.getClass().equals(Base.class)) false
|
|
|
|
|
x.getClass().equals(Derived.class)) true
|
2015-09-07 11:44:36 -06:00
|
|
|
|
*/
|