以下是instanceof的使用是不好的编程

nik*_*iks 1 java

我正在尝试下面的一段代码.

 public void doSomething(){

           makeMethodCall(car);

           statement1......
           statement2......

         makeMethodCall(bike);

            statement3......

         makeMethodCall(bicycle);

    }


   private void makeMethodCall(Object obj){
        if(obj instanceof Car){
                 obj.drive();
        }
          if(obj instanceof Bike){
                 obj.drive();
        }
            if(obj instanceof Bicycle){
                 obj.drive();
        }
        // There are many if loops
      }
Run Code Online (Sandbox Code Playgroud)

我在想我正在做一些错误的活动.无论如何,我可以使用lamba表达式来处理这个编程.我是java8的新手,我发现使用lambda表达式很棘手.

Mik*_*kis 7

Object在绝大多数情况下,声明一个接受作为参数的函数是不好的做法,当然在手头的情况下.

Car,Bike并且Bicycle应该从一个共同的抽象基类派生Vehicle,它定义一个抽象方法drive().然后,将在每个派生类中重写此方法.

所以,而不是makeMethodCall( object )你会这样做vehicle.drive().

  • 或者一个界面 (3认同)