java 。抽象元素列表。如何确定元素类型

标签 java oop

我有基本的抽象类:

 abstract class Graphic 
 {
 abstract void draw(Graphics g);
 }

我有 Group 类,它有助于将元素分组到特定的组中。请注意,该 Group 类内部可以包含其他 Group 元素。

 class Group extends Graphic
 {
     private ArrayList<Graphic> children = new ArrayList<Graphic>();
 public ArrayList<Graphic> getChildren() 
 {
      return children;
 }

 public void setChildren(ArrayList<Graphic> children) 
 {
          this.children = children;
 }

 public void draw(Graphics g)
 {
     for(Graphic child:children)
     {
          child.draw(g);
     }
 }
 }

这是也扩展了 Graphic 的线类。

 class Line extends Graphic  {
     private Point startPoint = new Point(0,0);
 private Point endPoint = new Point(1,1);

 public void draw(Graphics g) 
 {
     g.drawLine(startPoint.x, startPoint.y, endPoint.x, cendPoint.y);
 }
 }

我可以将 Line 元素或另一个 Group 元素添加到 Group 类子列表中,也就是说,我可以对组进行分组,这些组也可以有自己的组,每个组也可以有 line 元素,但是我无法确定子元素是 Group 还是 Line。如何判断元素是Group还是Line?

最佳答案

instanceof 运算符或比较 object.getClass() 对象。 但检查对象的具体类型并不是一个好的做法。 您应该仅依赖公共(public)界面(您的图形)

关于 java 。抽象元素列表。如何确定元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906402/

相关文章:

java - eclipse 中 Ctrl-f6 的对话框名称

C# 继承和默认构造函数

java - 如何使用 Robot 类在 java 中发送 CTRL+Z keyEvent

java - 附加非空字符串的优雅方式

C# 嵌套类访问父成员

node.js - 直接从 require 创建一个类的实例

java - Java中命名对象的最佳实践

java - 如何删除错误 UnsupportedOperationException 和可能的内存泄漏

Java ChangeListener 多次触发

java - GWT 突然停止执行