Если метод Java® возвращает примитивный тип данных, то MATLAB® преобразовывает данные, как показано в таблице в Примитивных Типах Возврата.
Если сигнатура метода Java задает данные о возврате типа java.lang.Object
, то MATLAB преобразовывает фактический возвращенный тип, как показано в таблице в java.lang. Объектные Типы Возврата.
MATLAB не преобразовывает другие объекты Java в типы MATLAB. Для получения информации об обработке этих данных смотрите Функции, чтобы Преобразовать Объекты Java в Типы MATLAB.
MATLAB преобразовывает примитивные данные, возвращенные в метод Java в типы, которые лучше всего представляют данные языку MATLAB. Эта таблица показывает, как MATLAB преобразовывает данные. Для некоторых типов Java MATLAB обрабатывает скаляр, и массив возвращается по-другому.
Java возвращает тип | Получившийся тип MATLAB — скаляр | Получившийся тип MATLAB — массив |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Подпись для метода 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.Object
возвращает типыКогда метод Java, как объявляют, возвращает данные типа java.lang.Object
, MATLAB преобразовывает свое значение в зависимости от фактического возвращенного типа. Эта таблица показывает, как MATLAB преобразовывает данные.
Фактический тип Java | Получившийся тип MATLAB — скаляр |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Нет никакого преобразования, если возвращаемый аргумент является подклассом Object
или массивом Object
. Объект остается объект Java. Однако, если вы индексируете в возвращенный массив Object
, MATLAB преобразовывает значение согласно таблице. Для получения дополнительной информации смотрите Элементы Объектного массива Преобразования к Типам MATLAB.
Обратитесь к следующей подписи для метода getData
.
java.lang.Object getData()
Если getData
возвращает объект java.lang.Integer
, то MATLAB преобразовывает значение в double
.
MATLAB только преобразовывает возвращаемые значения данных объектов, если сигнатура метода задает java.lang.Object
. Если подпись задает какой-либо другой тип объекта, то MATLAB не преобразовывает значение. Например, MATLAB действительно преобразовывает возвращаемое значение для этой сигнатуры метода:
java.lang.Object getData()
Но MATLAB не преобразовывает возвращаемое значение для этого метода:
java.lang.String getData()
Чтобы преобразовать данные объектов Java в данные MATLAB, используйте функции MATLAB, как описано в этих темах:
Чтобы преобразовать Java числовые типы в типы MATLAB, используйте числовую функцию MATLAB как double
. Меры, принятые функцией double
, зависят от класса объекта, который вы задаете.
Если объект является экземпляром класса, выведенного от java.lang.Number
, то MATLAB преобразовывает объект в double
MATLAB.
Если объект не является экземпляром числового класса, то MATLAB проверяет определение класса на метод toDouble
. MATLAB вызывает этот метод, чтобы выполнить преобразование.
Если вы создаете свой собственный класс, то запишите метод toDouble
, чтобы задать ваше собственное преобразование типов.
Если класс объекта не выведен от java.lang.Number
, и это не реализует метод toDouble
, то функция double
отображает сообщение об ошибке.
Чтобы преобразовать объекты java.lang.String
и массивы к строкам MATLAB или векторам символов, используйте string
MATLAB или функцию char
.
Если объект, заданный в функции MATLAB, не является экземпляром класса java.lang.String
, то MATLAB проверяет свое определение класса на toString
или метод toChar
. Если вы создаете свой собственный класс, то запишите toString
или метод toChar
, чтобы задать преобразование строк.
Если классом объекта не является java.lang.String
, и это не реализует метод toChar
, то функция char
отображает сообщение об ошибке.
Если класс 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]
Если ваши методы Java возвращают различные типы данных, то используйте функцию cell
, чтобы преобразовать данные в типы MATLAB. Элементы получившегося массива ячеек преобразованы согласно Примитивным Типам Возврата и java.lang. Объектные Таблицы типов Возврата.
Предположим, что вы вызываете методы 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'