相关疑难解决方法(0)

instanceof与多态

我遇到了instanceof运营商的麻烦.我试图避免它.基本上,我有以下结构:

class Shape {}
class Triangle extends Shape {}
class Rectangle extends Shape {}

ShapeParser s;
while (s.hasNext())
     parseShape(s.next()); // returns a Shape object

void parseShape(Triangle t) { // do stuff } // KEY POINT HERE
void parseShape(Rectangle t) { // etc }
Run Code Online (Sandbox Code Playgroud)

我正在做的关键点是:我想要对函数执行参数重载,但是它不能正常工作(编译错误).我试图避免:

void parseShape(Shape s)
{
     if (s instanceof Triangle) ...
}
Run Code Online (Sandbox Code Playgroud)

更新:似乎共识是创建一个基类方法:parseShape()来完成提升.我想澄清一下我的问题:这个问题的动机是与观察者模式有关.假设我有以下Observer对象有效负载方法:

    public void update(Observable obj, Shape objectPayload){} 
// note: the objectPayload is usually of type Object
Run Code Online (Sandbox Code Playgroud)

而不是执行:

public void update(Observable obj, Shape objectPayload)
{ …
Run Code Online (Sandbox Code Playgroud)

java polymorphism

5
推荐指数
1
解决办法
2283
查看次数

标签 统计

java ×1

polymorphism ×1