%THIS Пример встроенной функцииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 %THIS Пример встроенной функции

Сообщение Anonymous »


Я работаю новым разработчиком ролевых игр уже около года и также в некоторой степени знаю Java. Я бьюсь с этим BIF уже несколько дней и нигде не нахожу ничего полезного. Вот пример IBM DOC, который у меня не работает:

%ЭТА IBM

Мне удалось вызвать конструктор класса Java и метод класса.

D* Строка Java DstringClass C 'java.lang.String' DJAVA_STRING S O CLASS (*JAVA:stringClass) DnewString PR O EXTPROC(*JAVA:stringClass Д :*КОНСТРУКТОР) Dvalue 65535A ВАРИАНТНАЯ КОНСТАНТА DJAVA_toString PR LIKE(Java_STRING) D EXTPROC(*JAVA:stringClass D :*КОНСТРУКТОР) Значение D 65535A ВАРИАЦИОННАЯ КОНСТАНТ. DgetBytes PR НРАВИТСЯ (ИМЯ) D EXTPROC(*JAVA:stringClass D :'getBytes') Dvalue 65535A ВАРИАНТНАЯ КОНСТАНТА D* Сотрудник Java DnewEmp PR O EXTPROC(*JAVA:'Сотрудник': Д *КОНСТРУКТОР) D id 10I 0 ЗНАЧЕНИЕ D имя O CLASS(*JAVA:stringClass) D VCUS 10I 0 ЗНАЧЕНИЕ D VCU 10I 0 ЗНАЧЕНИЕ Д Сотрудник S O CLASS(*JAVA:'Сотрудник') Д DvacationDays PR 10I 0 EXTPROC(*JAVA:'Сотрудник' D :'vacationDays') DgetId PR 10I 0 EXTPROC(*JAVA:'Сотрудник' Д :'getId') ДРТННР С 10И 0 ДНАЗВАНИЕ С 10А Д C EVAL JAVA_STRING = JAVA_toString('Джон') Сотрудник C EVAL = newEmp(123:JAVA_STRING:15:10) C EVAL RTNNR = VacationDays(сотрудник) С СЕТОН ЛР С PvacationDays B ЭКСПОРТ DvacationDays PI 10I 0 DidNummer S 10I 0 С C EVAL idNummer = getId(%THIS) C ВОЗВРАТ idNummer PvacationDays E Класс Java:

публичный класс Сотрудник{ частный внутренний идентификатор; частное имя строки; частный международный отпускНеизрасходованный; частный int VacationUsed; // Конструктор // Геттер + Сеттер // Методы public int VacationDays (Сотрудник) { последний международный отпуск; отпуск = this.vacationUnspent - this.vacationUsed; возвратный отпуск; } } Я могу скомпилировать оба и запускать их до точки RTNNR = VacationDays(employee), где я получаю сообщение об ошибке: RNX0301 "java.lang.NoSuchMethodError: Работник.vacationDays()I"

поэтому я сделал «javap -s Сотрудник» в Qshell: public int VacationDays(Сотрудник);
дескриптор: (LEmployee;)I

Поэтому я явно не хочу углубляться в класс Java, а вместо этого использую метод в моей программе RPG, чтобы использовать %THIS BIF. И я не могу скомпилировать программу RPG, когда VacationDays() пуст. Ему нужен Объект. Немного раздражает, что в примере IBM не показан вызов VacationDays, поэтому мне приходится многое предполагать.

Заранее спасибо.

Я попытался воссоздать пример IBM, а также еще несколько обычных примеров вызова методов Java в RPG. Последнее сработало. Мне удалось проникнуть в класс Java и его методы и получить ожидаемые результаты. Мне не удалось найти других примеров %THIS в Интернете, и другие разработчики моей компании никогда его не использовали.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»