В ролях с языком выражений
Можно ли использовать с помощью 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
}