我需要从文件中读取输入并绘制适当的形状。形状可以是矩形,椭圆形,圆形或直线形。我知道如何使用这些。但是,我想知道我是否可以使用通用接口并使用它们中的每一个。
我的意思是,我希望我可以定义为:
Shape currentShape;
然后我可以做:
currentShape = new Rectangle(-);
currentShape = new Ellipse2D.Double(-);
等等。
但是,我无法使用currentShape访问对象的独占方法。
有什么替代方案?
PS:我正在使用swing类。
答案 0 :(得分:1)
好吧,你不能访问动态类型的方法(Rectangle,Double等..)因为静态类型是父类(Shape)。但这是你如何施展它:
Shape currentShape;
currentShape = new Ellipse2D.Double();
if(currentShape instanceof Ellipse2D.Double){
Ellipse2D.Double tmpShape = (Ellipse2D.Double) currentShape;
// Code goes here
} // else if (same for Rectangle, or any other child of Shape)