Этот пример показывает, как вызвать метод класса java.util.ArrayList
. Пример демонстрирует то, что это означает иметь объекты Java® как ссылки в MATLAB®.
Класс java.util.ArrayList
является частью библиотек стандарта Java. Поэтому класс уже находится на пути к классу Java. Если вы вызываете метод в классе, который не находится в стандартной библиотеке, то обновите путь к классу Java так, чтобы MATLAB мог найти метод. Для получения информации смотрите Путь к классу Java.
Создайте объект ArrayList
при помощи одного из конструкторов класса. Отобразите методы класса и ищите записи ArrayList
в окне методов.
methodsview('java.util.ArrayList')
ArrayList (java.util.Collection) ArrayList ( ) ArrayList (int)
Выберите синтаксис ArrayList()
, который создает пустой список с начальной способностью 10.
Используйте функцию import
, чтобы относиться к классу ArrayList
, не указывая, что целый пакет называет java.util
.
import java.util.ArrayList
Создайте пустой объект ArrayList
.
A = ArrayList;
Добавьте элементы к объекту ArrayList
. Посмотрите в окне методов на подписи для метода add
.
void add (int,java.lang.Object) boolean add (java.lang.Object)
Выберите синтаксис boolean add(java.lang.Object)
. Аргумент java.lang.Object
является типом Java. Чтобы найти соответствующий тип MATLAB, посмотрите на Java Передачи. Таблица lang.Object. Если вы передаете аргумент double
, MATLAB преобразовывает его в тип java.lang.Double
.
Добавление элементов к ArrayList
Чтобы вызвать метод add
, используйте синтаксис MATLAB.
add(A,5); A
A = [5.0]
Также используйте синтаксис Java.
A.add(10); A
A = [5.0, 10.0]
Чтобы наблюдать поведение копирования объектов Java, присвойте A
новому переменному B
.
B = A;
B
является ссылкой на A
. Любое изменение в объекте, на который ссылается B
также, изменяет объект в A
. Или код MATLAB или код Java могут изменить объект. Например, добавьте значение к B
, и затем отобразите A
.
add(B,15); A
A = [5.0, 10.0, 15.0]
Использование объекта ArrayList в MATLAB
Предположим, что вы вызываете метод Java, который возвращает объект Java типа ArrayList
. Если вы вызвали команды в предыдущих разделах, переменный A
содержит следующие значения:
class(A)
ans = 'java.util.ArrayList'
A
A = [5.0, 10.0, 15.0]
Чтобы использовать A
в MATLAB, преобразуйте объект или в тип java.lang.Object
или в тип примитива. Затем примените cell
MATLAB и функции cell2mat
.
Из окна методов ArrayList
найдите метод toArray
, который преобразовывает ArrayList
в java.lang.Object[]
.
java.lang.Object[] toArray (java.lang.Object[])
Преобразуйте A
в java.lang.Object
.
res = toArray(A)
res = java.lang.Object[]: [ 5] [10] [15]
Преобразуйте вывод в тип MATLAB.
res = cell(res)'
res = 1×3 cell array [5] [10] [15]
Чтобы преобразовать это значение в матрицу, элементы должны быть тем же типом. В этом примере значения преобразовывают, чтобы ввести double
.
data = cell2mat(res)
data = 5 10 15