java的instanceof操作符行为很是古怪啊 似乎instanceof前面确定了后面就是受限的,只能是接口或前面对象的类的类继承链中的一员(是为了提高性能吗,还是一个bug就),而后面固定的情况下(下面代码中的isMyType方法)前面的对象可以是任何类型的(包括null虽然它总会得到FALSE)。
可惜Class.isInstance()也是个native方法,真愁人啊可。
有人了解不这个?
public class InstanceofTest implements IA{
public static void main(String[] args){
SubClass sc = new SubClass();
InstanceofTest it = new InstanceofTest();
// 提示 Inconvertible types:cannot cast 'SubClass' to 'AnoSubClass'
// System.out.printf("sc instanceof AnoSubClass:%b%n", sc instanceof AnoSubClass);
System.out.printf("it instanceof SubClass:%b%n", it instanceof SubClass);
System.out.printf("sc instanceof IA:%b%n", sc instanceof IA);
System.out.printf("sc instanceof IB:%b%n", sc instanceof IB);
//insstanceof前面不能用int,这里不会发生自动装箱
System.out.println(new Integer(2) instanceof Integer);
sc.test();
System.out.println(it.isMyType(new Integer(2)));
// System.out.printf("new Integer(2) instanceof InstanceofTest:%b%n", new Integer(2) instanceof InstanceofTest);
}
<T> boolean isMyType(T t){
return t instanceof InstanceofTest;
}
}
interface IA {}
interface IB{}
class AnoSubClass extends InstanceofTest{}
class SubClass extends InstanceofTest{
void test()
{
System.out.println("#####this is SubClass");
System.out.printf("#####this instanceof SubClass:%b%n",this instanceof SubClass);
System.out.printf("#####IA.class.isInstance(this):%b%n",IA.class.isInstance(this));
System.out.printf("#####super.getClass().isInstance(this):%b%n",super.getClass().isInstance(this));
System.out.printf("#####this instanceof InstanceofTest:%b%n",this instanceof InstanceofTest);
System.out.printf("#####AnoSubClass.class.isInstance(this):%b%n",AnoSubClass.class.isInstance(this));
// System.out.printf("#####this instanceof Object:%b",this instanceof AnoSubClass);
}
}
分享到:
相关推荐
java instanceof运算符
Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门...
instanceof 马克-to-win java视频的详细的描述介绍
《深入理解Java `instanceof` 关键字的实现机制》 `instanceof` 是Java语言中一个非常重要的关键字,它用于判断对象是否属于某个类或其子类(或实现了某个接口)。在Java的世界里,`instanceof` 关键字扮演着类型...
在Java编程语言中,`instanceof`操作符是一个至关重要的工具,它允许程序员在运行时检查对象的类型。`instanceof`主要用于确定一个对象是否属于某个特定类、接口或者其子类(或实现)。理解`instanceof`的使用和原理...
在Java编程语言中,方法的重写和多态是面向对象设计的重要概念,它们使得代码更加灵活和可扩展。下面将详细阐述这两个概念及其应用场景。 首先,方法的重写(Override)是指在一个子类中定义与父类相同名称和参数...
Java instanceof 和 getClass() 区别实例解析 Java instanceof 和 getClass() 是 Java 语言中两个常用的操作符,用于判断对象的类型或类别。然而,很多开发者对这两个操作符的使用和区别不够了解。在本文中,我们将...
Java的`instanceof`关键字是Java语言中用于判断对象类型的工具,它可以帮助程序员确定一个对象是否属于特定的类或者其子类(或接口)的实例。`instanceof`操作符的语法是`object instanceof ClassName`,其中`object...
Java 中 instanceof 与 Class 的等价性代码示例 Java 中的 `instanceof` 运算符是一个二元操作符,用于检查对象是否属于某个特定类或其子类。它返回一个布尔值,指示对象是否是该类或其子类的一个实例。在 Java 中...
Java中的`instanceof`运算符是用来在程序运行时判断一个对象是否属于某个特定类或其子类(或者实现了某个接口)的关键字。它允许我们动态地检查对象的类型,这对于多态性和类型安全的编程非常有用。以下是`...
在Java编程语言中,`instanceof`关键字是一个非常重要的工具,它用于判断对象是否属于某个类、接口或者其子类。这个关键字可以帮助开发者在运行时检查一个对象的类型,从而进行更加灵活的代码控制。本篇文章将深入...
`instanceof`是Java语言中的一个关键字,用于检查对象的类型。它可以帮助程序员确定对象是否属于特定类或者其子类(或实现的接口)的实例。`instanceof`操作符的语法结构是: ```java object instanceof ClassName ...
在Android开发中,Java语言是主要的编程工具,而在Java中,`instanceof`关键字扮演着重要的角色。本文将深入探讨`instanceof`的关键字用法及其在Android开发中的应用场景。 `instanceof`是一个二元操作符,它用于...
在Java编程语言中,`instanceof` 和 `getClass()` 是两个重要的操作符和方法,它们在类型检查和对象实例识别方面发挥着关键作用。本文将深入探讨这两个概念的区别及其应用场景。 `instanceof` 关键字主要用于判断一...
java学习-java中的继承extents和instanceof关键字
在Java编程语言中,`instanceof`是一个十分重要的关键字,用于判断一个对象是否属于特定的类或接口。本文将详细解释`instanceof`的关键特性和使用场景,并通过示例代码加深理解。 #### 一、基本概念 `instanceof`...
Java关键字instanceof用法及实现策略 Java中的instanceof运算符是用来在运行时判断对象是否是指定类及其父类的一个实例。下面我们将详细介绍Java关键字instanceof的用法和实现策略。 instanceof运算符的基本用法 ...
Java instanceof 运算符的使用方法 Java instanceof 运算符是 Java 语言中的一种二元运算符,它用于判断前面的对象是否是后面的类、接口、抽象类或其子类、实现类的实例。如果是,则返回 true,否则返回 false。 ...