В ролях с языком выражений

Можно ли использовать с помощью EL?

У меня есть класс Vehicle и два других класса Car и Bus, которые расширяют Автомобиль. Я ищу все Транспортные средства и там некоторые данные, которые есть в Автобусе, но не имеют в Автомобиле.

Итак, я пытался показать вещи из автомобиля, когда это автомобиль и вещи из автобуса, когда он автобус.

Как я могу это сделать, Cast, instanceof? И как бы я это сделал, потому что я немного потерялся здесь.

Спасибо

Ответ 1

Вы можете использовать ${obj.class.simpleName == 'Car'}, но это не самая лучшая вещь.

Возможно, вы можете использовать абстрактный метод geType() и использовать его для дифференциации. Например:

<c:forEach items="${vehicles}" var="vehicle">
   Reg.No: ${vehicle.registrationPlateNumber}
   <c:if test="${vehicle.type == 'bus'}">
      Toilets: ${vehicle.toilets}
   </c:if>
</c:forEach>

Ответ 2

вы сделаете это, расширив автомобиль и автобус от класса автомобиля (поскольку транспортное средство будет родительским классом). Для примера

public class Vehicle {
   public void speed(){
   // some code
  }
}
public class Car extends Vehicle {
    public void speed(){
    // some code
   }
}
public class Bus extends Vehicle {
   public void speed(){
    // some code
   }
}

теперь вы можете проверить при запуске или получении этой погоды, это экземпляр транспортного средства, не использующего ключевое слово instanceOf.

i.e

if(new car() instanceOf Vehicle){
//somecode
}