2016-03-02 5 views
1

У меня есть родительский класс Vehicle(), переданный в файл drools xls, как я могу получить доступ к свойствам дочернего класса Car()?Доступ к свойствам класса Child из родительского класса в drools

Я попытался литья, но она течет слюна не распознает метод отливать

(Car.cast(vehicle)).isManual() 

Редактировать по Лауне от комментариев OP в: В Drools версии я использую 4.0.7

import workspace.sampleproj.domain.* 
function boolean checkIfCarManual(Vehicle vehicle){ 
    if (vehicle.isCar() == true){ 
     if((Car.cast(vehicle).isManual() == true){ 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 
+0

Можете ли вы показать контекст, в котором вы используете это? LHS - RHS -? – laune

+0

Hi laune, я использую это в вызове функции – SpongebobJunior

+1

Что? И где? - Ты обязательно нуждаешься в сжатии, чтобы сок течет ... ;-) – laune

ответ

1

Drools не может распознать то, что не может быть распознано.

Если ваш класс Car имеет статический метод cast(Vehicle v), его следует признать. (Если нет такого метода, вы получите сообщение об ошибке.)

class Car extends Vehicle { 
    public static Car cast(Vehicle v){ return (Car)v; } 
    ... 
} 

Возможно, вы пытались использовать cast метод java.lang.Class? Если да, то вы должны будете написать

(Car.class.cast(vehicle)).isManual() 

Позже И нет никаких причин, почему вы не должны быть в состоянии использовать простой бросок:

function boolean checkIfCarManual(Vehicle vehicle){ 
    return vehicle.isCar() && ((Car)vehicle).isManual(); 
} 
+0

Hi Laune, Извините, я не очень хорошо знаком с слюнами, поэтому я не могу объяснить себя ясно. Да, я использовал java.lang.Class, но drools не узнал его. К сожалению, я могу только изменить drools xls, а не зону автомобиля. Есть ли другой способ сделать это только в xls? Спасибо – SpongebobJunior

+0

Ну, что * * * * * * * * писал, пытаясь вызвать метод 'cast'' java.lang.Class'? И как вы использовали его в xls ?? Какая версия Drools ??? Вы прочитали мой ответ ???? – laune

+0

Извинения. Вот функция, которую я пытаюсь реализовать в основном, она проверяет, является ли автомобиль obj автомобилем, и если это механическая коробка передач. Версия drools, которую я использую, - 4.0.7. К сожалению, я не могу использовать ваш ответ, поскольку я могу изменить только xls, а не домен. 'импорт workspace.sampleproj.domain. * функция булева checkIfCarManual (Vehicle автомобиль) { \t если (vehicle.isCar() == TRUE) { \t \t если ((Car.cast (транспортное средство) .isManual() == TRUE) { \t \t \t возвращает истину; \t \t} \t \t еще { \t \t \t возвращение ложным; \t \t} \t} else { \t return false; } – SpongebobJunior

Смежные вопросы