Обработка данных, возвращенных в методы Java

Если метод Java® возвращает примитивный тип данных, то MATLAB® преобразовывает данные, как показано в таблице в Примитивных Типах Возврата.

Если сигнатура метода Java задает возврат данные типа java.lang.Object, то MATLAB преобразовывает фактический возвращенный тип, как показано в таблице в Java. lang.Object Return Types.

MATLAB не преобразовывает другие объекты Java в типы MATLAB. Для получения информации об обработке этого данные смотрите Функции, чтобы Преобразовать Объекты Java в Типы MATLAB.

Примитивные типы возврата

MATLAB преобразовывает примитивные данные, возвращенные в метод Java в типы, которые лучше всего представляют данные языку MATLAB. Эта таблица показывает, как MATLAB преобразовывает данные. Для некоторых типов Java MATLAB обрабатывает скаляр, и массив возвращается по-другому.

Java возвращает типПолучившийся тип MATLAB — скалярПолучившийся тип MATLAB — массив

boolean

логический

логический

byte

'double'

int8

short

'double'

int16

int

'double'

int32

long

'double'

int64

float

'double'

единственный

'double'

'double'

'double'

'char'

'char'

'char'

Пример

Подпись для метода java.lang.String toCharArray:

public char[] toCharArray()

Вызовите метод на объекте String. MATLAB преобразовывает вывод в массив char.

str = java.lang.String('hello');
res = str.toCharArray'
res =

  1×5 char array

hello

java.lang. Объектные Типы Возврата

Когда метод Java, как объявляют, возвращает данные типа java.lang.Object, MATLAB преобразовывает свое значение в зависимости от фактического возвращенного типа. Эта таблица показывает, как MATLAB преобразовывает данные.

Фактический тип JavaПолучившийся тип MATLAB — скаляр

java.lang. Булевская переменная

логический

java.lang. Байт

'double'

java.lang. Короткий

'double'

java.lang. Целое число

'double'

java.lang. Долго

'double'

java.lang. Плавание

'double'

java.lang. 'double'

'double'

java.lang. Символ

'char'

java.lang. Строка

'char'

Нет никакого преобразования, если возвращаемый аргумент является подклассом Object или массивом Object. Объект остается объект Java. Однако, если вы индексируете в возвращенный массив Object, MATLAB преобразовывает значение согласно таблице. Для получения дополнительной информации смотрите Элементы Объектного массива Преобразования к Типам MATLAB.

Пример

Обратитесь к следующей подписи для метода getData.

java.lang.Object getData()

Если getData возвращает объект java.lang.Integer, то MATLAB преобразовывает значение в double.

Функции, чтобы преобразовать объекты Java в типы MATLAB

MATLAB только преобразовывает возвращаемые значения данных объектов, если сигнатура метода задает java.lang.Object ., Если подпись задает какой-либо другой тип объекта, то MATLAB не преобразовывает значение. Например, MATLAB действительно преобразовывает возвращаемое значение для этой сигнатуры метода:

java.lang.Object getData()

Но MATLAB не преобразовывает возвращаемое значение для этого метода:

java.lang.String getData()

Чтобы преобразовать данные объектов Java в данные MATLAB, используйте функции MATLAB, как описано в этих темах:

Преобразование в MATLAB числовых типов

Чтобы преобразовать Java числовые типы в типы MATLAB, используйте числовую функцию MATLAB как double. Меры, принятые функцией double, зависят от класса объекта, который вы задаете.

  • Если объект является экземпляром класса, выведенного от java.lang.Number, то MATLAB преобразовывает объект в double MATLAB.

  • Если объект не является экземпляром числового класса, то MATLAB проверяет определение класса на метод toDouble. MATLAB вызывает этот метод, чтобы выполнить преобразование.

  • Если вы создаете свой собственный класс, то запишите метод toDouble, чтобы задать ваше собственное преобразование типов.

Примечание

Если класс объекта не выведен от java.lang.Number, и это не реализует метод toDouble, то функция double отображает сообщение об ошибке.

Преобразование в строки MATLAB

Чтобы преобразовать объекты java.lang.String и массивы к строкам MATLAB или векторам символов, используйте string MATLAB или функцию char.

Если объект, заданный в функции MATLAB, не является экземпляром класса java.lang.String, то MATLAB проверяет свое определение класса на toString или метод toChar. Если вы создаете свой собственный класс, то запишите toString или метод toChar, чтобы задать преобразование строк.

Примечание

Если классом объекта не является java.lang.String, и это не реализует метод toChar, то функция char отображает сообщение об ошибке.

Преобразование в структуру MATLAB

Если класс Java задает имена полей, то используйте функцию struct, чтобы преобразовать данные объектов в структуру MATLAB.

Предположим, что вы вызываете метод Java, который возвращает объект java.awt.Polygon. Класс задает поля xpoints и ypoints. Чтобы запустить этот пример, создайте переменную polygon.

polygon = java.awt.Polygon([14 42 98 124],[55 12 -2 62],4);

Преобразуйте объект в структуру и отобразите x, y координаты для третьей точки.

pstruct = struct(polygon)
pstruct = 

  struct with fields:

    npoints: 4
    xpoints: [4×1 int32]
    ypoints: [4×1 int32]

Преобразование в массив ячеек MATLAB

Если ваши методы Java возвращают различные типы данных, то используйте функцию cell, чтобы преобразовать данные в типы MATLAB. Элементы получившегося массива ячеек преобразованы согласно Примитивным Типам Возврата и Java. ленг . Объектные Таблицы типов Возврата.

Предположим, что вы вызываете методы Java, что возвращаемые аргументы типа java.lang.Double, java.awt.Point, и java.lang.String ., Чтобы запустить этот пример, создают переменные этих типов.

import java.lang.* java.awt.*;

% Create a Java array of double
dblArray = javaArray('java.lang.Double',1,10);
for m = 1:10
   dblArray(1,m) = Double(m * 7);
end

% Create a Java array of points
ptArray = javaArray('java.awt.Point',3);
ptArray(1) = Point(7.1,22);
ptArray(2) = Point(5.2,35);
ptArray(3) = Point(3.1,49);

% Create a Java array of strings
strArray = javaArray('java.lang.String',2,2);
strArray(1,1) = String('one');
strArray(1,2) = String('two');
strArray(2,1) = String('three');  
strArray(2,2) = String('four');

Преобразуйте каждый массив в массив ячеек. Можно использовать cellArray в функциях MATLAB.

cellArray = {cell(dblArray),cell(ptArray),cell(strArray)}
cellArray =

  1×3 cell array

    {1×10 cell}    {3×1 cell}    {2×2 cell}

Каждая ячейка содержит массив другого типа. Отобразите содержимое.

cellArray{1,1}       % Array of type double
ans =

  1×10 cell array

    [7]    [14]    [21]    [28]    [35]    [42]    [49]    [56]    [63]    [70]
cellArray{1,2}       % Array of type Java.awt.Point
ans =

  3×1 cell array

    [1×1 java.awt.Point]
    [1×1 java.awt.Point]
    [1×1 java.awt.Point]
cellArray{1,3}       % Array of type char array
ans =

  2×2 cell array

    'one'      'two' 
    'three'    'four'

Похожие темы

Была ли эта тема полезной?