如何使用instanceof操作符判断对象类型
2017-09-10 16:44
204 查看
当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成,可以使用instanceof操作符判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。
instanceof的语法格式如下:
myobject instanceof ExampleClass;
myObject:某类的对象的引用。
ExampleClass:某个类。
使用instanceof操作符的表达式返回值为布尔值,如果返回值为true,说明myobject对象为ExampleClass的实例对象,如果返回值为false,说明myobject对象不是ExampleCLass的实例对象。
例1;在项目中创建parallelogram类和3个内部类Quadrangle、Square、Anything。其中Parallelogram类和Square类继承Quadragle类,在Parallelogram类的主方法中分别创建这些类的对象,然后使用instanceof操作符判断他们的类型并输出结果;
在主方法中首先创建四边形类对象,然后使用instanceof操作符判断四边形类对象是否为平行四边形类的一个实例,是否为正方形类的一个实例,如果判断结果为true,将进行向下转型操作。
instanceof的语法格式如下:
myobject instanceof ExampleClass;
myObject:某类的对象的引用。
ExampleClass:某个类。
使用instanceof操作符的表达式返回值为布尔值,如果返回值为true,说明myobject对象为ExampleClass的实例对象,如果返回值为false,说明myobject对象不是ExampleCLass的实例对象。
例1;在项目中创建parallelogram类和3个内部类Quadrangle、Square、Anything。其中Parallelogram类和Square类继承Quadragle类,在Parallelogram类的主方法中分别创建这些类的对象,然后使用instanceof操作符判断他们的类型并输出结果;
class Quadrangle { public static void draw(Quadrangle q) { // SomeSentence } } class Square extends Quadrangle { // SomeSentence } class Anything { // SomeSentence } public class Parallelogram extends Quadrangle { public static void main(String args[]) { Quadrangle q = new Quadrangle(); // 实例化父类对象 // 判断父类对象是否为Parallelogram子类的一个实例 if (q instanceof Parallelogram) { Parallelogram p = (Parallelogram) q; // 向下转型操作 } // 判断父类对象是否为Parallelogram子类的一个实例 if (q instanceof Square) { Square s = (Square) q; // 进行向下转型操作 } // 由于q对象不为Anything类的对象,所以这条语句是错误的 // System.out.println(q instanceof Anything); } }
在主方法中首先创建四边形类对象,然后使用instanceof操作符判断四边形类对象是否为平行四边形类的一个实例,是否为正方形类的一个实例,如果判断结果为true,将进行向下转型操作。
相关文章推荐
- 如何判断对象类型/对typeof方法使用认识
- 使用instanceof操作符判断对象类型
- 丶使用is关键字判断对象是否与指定类型兼容
- 如何使用php判断所处服务器操作系统的类型
- 如何使用JQuery去判断一个元素(对象)是否存在
- 如何根据User Agent参数字符串判断客户端使用的是什么浏览器的版本及类型
- 如何判断对象包含List<T>中的类型
- [翻译]如何使用LINQ方法来比较自定义类型的对象
- javascript 如何判断一个对象的类型
- JAVASCRIPT随记-使用偏函数判断对象类型
- Delphi中避免使用ClassName判断对象的类型
- 如何判断一个对象能不能使用plist
- 如何判断一个对象是否是基本类型的Wrapper
- 如何判断CFArray中对象的类类型
- Delphi中避免使用ClassName判断对象的类型
- javascript中如何做对象的类型判断
- 使用isinstance()来判断一个对象的类型
- Delphi中避免使用ClassName判断对象的类型
- JavaScript中如何判断变量是数组、函数或是对象类型
- 关于GetActiveObject,如何判断所取得对象的类型、、、可以用来检测某个程序是否运行