JavaCall
Эта функция позволяет вызвать метод имя_метода в объекте Java
объект_назначения с параметрами или вызвать статический метод имя_метода в классе Java
имя_класса с параметрами.
Добавление файлов архива Java (JAR) в совместно используемый каталог библиотеки
- Скопируйте классы Java в каталог $IMPACT_HOME/dsalib.
- Перезапустите сервер Impact, чтобы загрузить файлы JAR.
Синтаксис
JavaCall( имя_класса, объект_назначения, имя_метода, Параметры )Анализ важности независимых переменных
Параметр |
Описание |
|---|---|
|
Имя Java-класса. Если вы используете вызов нестатического метода, этому параметру присваивается нулевое значение (null). |
|
Имя создаваемого объекта Java. Если вы используете статический метод, этому параметру присваивается нулевое значение (null). |
|
Имя метода Java, в вызываемом классе Java. |
|
Массив значений параметров, которые требуются методу. |
Возвращаемое значение
Значение, возвращаемое методом (если оно есть).
Примеры
Получить системное свойство с именем app.
Вызвать метод java.lang.System.getProperty(
String key ) с использованием следующей строки:
Пример IPL:
propValue = JavaCall("java.lang.System", null, "getProperty", { "app" } );Тот же самый пример на языке JavaScript:
propValue = JavaCall("java.lang.System", null, "getProperty", [ "app" ] );В этом примере данная функция используется для проверки свойств JVM путем вызова методов для класса java.lang.System из политики.
В этом примере IPL в журнал будет записано значение системного свойства JRE с именем app:
propvalue = JavaCall("java.lang.System", null, "getProperty",
{ "app" } );
log("Property \"app\" is " + propvalue);Тот же самый пример на языке JavaScript:
propvalue = JavaCall("java.lang.System", null, "getProperty",
[ "app" ] );
Log("Property \"app\" is " + propvalue);В следующем примере IPL будет создан Java-объект класса Vector и будут вызваны его методы:
// Создать новый экземпляр Java-класса java.util.Vector
vector = NewJavaObject("java.util.Vector", null);
// Добавить элемент "111111" в вектор.
JavaCall(null, vector, "add", { "111111" });
// Получить элемент, находящийся в позиции 0.
log("Первый элемент - " + JavaCall(null, vector, "get", { 0 }) );
// Добавить элемент "22222" в позицию 0
JavaCall(null, vector, "add", { 0, "22222" });
// Выдать элемент, находящийся в позиции 0.
// Теперь это должно быть "22222", а не "111111".
log("Первый элемент - " + JavaCall(null, vector, "get", { 0 }) );
// Добавить элемент "33333" в вектор.
JavaCall(null, vector, "add", { "33333" });
// Выдать текущий размер вектора. Значение должно быть равно 3.
log("Размер вектора - " + JavaCall(null, vector, "size", {}));
Если вы используете JavaScript, то для функции JavaCall, которой требуется целочисленный аргумент, нужно использовать вызов JavaCall Integer.parseInt, чтобы создать действительное целое число.
// Создать новый экземпляр класса Java java.util.Vector
vector = NewJavaObject("java.util.Vector", null);
index = JavaCall("java.lang.Integer", null, "parseInt", ["0"]);
//Добавить "111111" в вектор.
JavaCall(null, vector, "add", ["111111"]);
// Получить элемент, находящийся в позиции 0.
Log("Первый элемент - " + JavaCall(null, vector, "get", [index]) );
// Добавить элемент "22222" в позицию 0
JavaCall(null, vector, "add", [index, "22222"]);
Log("Первый элемент - " + JavaCall(null, vector, "get", [index]) );