我有基本的抽象类:
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/