instanceof关键字在我们平常敲代码时并不是经常用到,但是它在某些方面还是很重要的。比如说到画板保存着一块,我们若要同时绘制多种图形,想要把他们保存下来,这时instanceof的作用就体现了。
instanceof的用法其实很简单,例如:A instanceof B,如果instanceof左边的对象A含有右边B的类,那么这时返回的是boolean类型的值。所以instanceof经常是用于条件的判定。这很简单,但是可能会有点模糊,看看代码。
List<Shape> shapeList = new ArrayList<Shape>();//队列来保存数据。
绘制以下三种图形时分别用shapelist来保存图形对象。
public void mouseReleased(MouseEvent e) { int x2 = e.getX(); int y2 = e.getY(); g.drawLine(x1, y1, x2, y2); Line line = new Line(); line.setX1(x1); line.setY1(y1); line.setX2(x2); line.setY2(y2); shapeList.add(line); }
public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); int width = 40; int height = 40; g.fillRect(x, y, width, height); Rect rect = new Rect(); rect.setX(x); rect.setY(y); rect.setWidth(width); rect.setHeight(height); shapeList.add(rect); }
public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); int width = 30; int height = 30; g.drawOval(x1, y1, width, height); Oval oval = new Oval(); oval.setX1(x1); oval.setY1(y1); oval.setWidth(width); oval.setHeight(height); shapeList.add(oval); }
//保存时:
if("保存".equals(command)){ File file = new Fil("C:\\Users\\Administrator\\Desktop\\java2.dat"); try { //文件输出流对象 FileOutputStream fos = new FileOutputStream(file); DataOutputStream dos = new DataOutputStream(fos); for(int i=0;i<shapeList.size();i++){ Shape shape = shapeList.get(i); //获取队列中的对象 if(shape instanceof Line){//如果是直线 Line line = (Line)shape; dos.writeInt(1); dos.writeInt(line.getX1()); dos.writeInt(line.getY1()); dos.writeInt(line.getX2()); dos.writeInt(line.getY2()); } if(shape instanceof Rect){//如果是矩形 Rect rect = (Rect)shape; dos.writeInt(2); dos.writeInt(rect.getX()); dos.writeInt(rect.getY()); dos.writeInt(rect.getWidth()); dos.writeInt(rect.getHeight()); } if(shape instanceof Oval){//如果是椭圆 Oval oval = (Oval)shape; dos.writeInt(3); dos.writeInt(oval.getX1()); dos.writeInt(oval.getY1()); dos.writeInt(oval.getWidth()); dos.writeInt(oval.getHeight()); } } fos.close(); } catch (Exception e1) { e1.printStackTrace(); } }
这里我用了三个例子,直线、矩形和椭圆。我这样做的前提是,我已经建好了Line、Rect和Oval(其属性get\set均有)三个对象同时去继承Shape类,而在Shape类当中,我们不必要去写任何的代码,当然也可以根据情况来适当去写一些。这里用了instanceof之后,可以很直接的将已经在画板上画好的的图形按照不同的类型来保存,这样的过程更加清晰明了。
相关推荐
因为在项目中遇到了instanceof,因此总结了对instanceof关键字的理解,有需要的可以下载来看看。
java学习-java中的继承extents和instanceof关键字
day10_22_用instanceof关键字进行类型判断
第05章 面向对象(下) 09 Instanceof关键字
Java中instanceOf关键字的用法及特性详解.rar
第21天,super,instanceof关键字的使用以及多态的认识
Java 实例 - instanceof 关键字用法源代码-详细教程.zip
主要介绍了PHP中instanceof关键字详解及instanceof关键字有什么作用的相关资料,需要的朋友可以参考下
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。这篇文章主要介绍了老生常谈Java中instanceof关键字的理解,需要的朋友可以参考下
288.286.JAVA基础教程_面向对象(中)-instanceof关键字的使用(288).rar
计算机后端-Java-Java核心基础-第14章 面向对象06 05. instanceof关键字的使用.avi
介绍了java final 和instanceof 关键字的区别,有需要的朋友可以参考一下
instanceof 马克-to-win java视频的详细的描述介绍
instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例.这篇文章主要介绍了Android中Java instanceof关键字全面解析的相关资料,需要的朋友可以参考下
RednaxelaFX,从事JVM研发戴翔、咚咔、evenX86 等人赞同在进入正题前先得提一句:既然楼主提问的背景是“被面试问到”,那很重要的一点
NULL 博文链接:https://chaoyi.iteye.com/blog/2079574
主要介绍了Java instanceof关键字的的进一步理解,本文用一些实例讲解了instanceof操作符的一些知识,需要的朋友可以参考下