Передайте данные в методы Java

Тип MATLAB в тип Java Отображения

Когда вы передаете MATLAB® данные как аргументы для Java® MATLAB преобразует данные в типы, которые лучше всего представляют данные в язык Java. Для получения информации о отображении типов при передаче данных в аргументы типа java.lang, см. «Передача объектов Java».

Каждая строка в следующей таблице показывает тип MATLAB, за которым следует возможный аргумент Java, соответствующий слева направо в порядке близости соответствия. Типы MATLAB (кроме массивов ячеек) могут быть скалярными (1 на 1) массивами или матрицами. Типы Java могут быть скалярными значениями или массивами.

Аргумент MATLAB

Тип параметра Java (скаляр или массив)
Типы, отличные от объекта

Ближайший тип < - - - - - - - - - - - - - - - - - - - - - - - - - - - > Тип наименьшего закрытия

logical

boolean

byte

short

int

long

float

double

double

double

float

long

int

short

byte

boolean

single

float

double

     

uint8
int8

byte

short

int

long

float

double

 

uint16
int16

short

int

long

float

double

  

uint32
int32

int

long

float

double

   

uint64
int64

long

float

double

    

string скаляром,
вектор символов,
char скаляр

String

      

string массив,
массив ячеек из векторов символов
См. раздел Переданные строковые аргументы.

String[]

      

Объект типа Java jClass

Java- Object типа jClass

любой суперкласс jClass

     

массив ячеек объекта

Object[]

      

Объект MATLAB

Неподдержанный

      

Как размеры массива влияют на преобразование

Термин « размерность» означает количество индексов, необходимых для обращения к элементам массива. Для примера массив 5 на 1 имеет одну размерность, потому что вы индексируете отдельные элементы с помощью одного индекса массива.

При преобразовании MATLAB в массивы Java MATLAB обрабатывает размерность специальным образом. Для массива MATLAB размерность - это количество несовпадающих размерностей в массиве. Для примера массив 10 на 1 имеет размерность 1. В то время как массив 1 на 1 имеет размерность 0, потому что вы не можете индексировать в скалярное значение. В коде Java количество вложенных массивов определяет размерность. Для примера, double[][] имеет размерность 2 и double имеет размерность 0.

Если количество размерностей массива Java совпадает с количеством размерностей в массиве MATLAB n, тогда преобразованный массив Java имеет n размерности. Если массив Java имеет меньше n размерности, затем преобразование понижает синглтонные размерности, начиная с первого. Преобразование останавливается, когда количество остальных размерностей совпадает с количеством размерностей в массиве Java. Если массив Java имеет больше n размерностей, то MATLAB добавляет конечные синглтонные размерности.

Преобразуйте числа в целочисленные аргументы

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

Если аргумент является числом с плавающей запятой, MATLAB не преобразует его в целое число так же, как Java. MATLAB сначала преобразует число с плавающей запятой в 64-разрядное целое число со знаком с усеченной дробной частью. Затем номер обрабатывается как int64 аргумент.

Число с плавающей запятой слишком велика, чтобы быть представленной в 64-разрядном целом числе, когда она (вне области значений от -263–263. В этом случае MATLAB использует следующие преобразования:

  • int, short, и byte значения параметров в 0.

  • long значения параметров в java.lang.Long.MIN_VALUE.

  • Inf и -Inf значения в -1.

  • NaN значения в 0.

Передайте строковые аргументы

Вызов метода Java с аргументом, заданным как java.lang.String, передайте строку MATLAB или вектор символов. MATLAB преобразует аргумент в String Java объект. Вы также можете пройти String объект, возвращенный методом Java.

Если аргумент метода является массивом типов String, затем передайте строковые массивы или массив ячеек векторов символов. MATLAB преобразует вход в массив String Java объекты с размерностями, скорректированными как описано в разделе «Как размеры массивов влияют на преобразование».

Передайте объекты Java

Чтобы вызвать метод, который имеет аргумент, принадлежащий классу Java (кроме java.lang.Object), необходимо передать объект Java, являющийся образцом этого класса. MATLAB не поддерживает автобоксирование Java, автоматическое преобразование типов MATLAB в Java Object типы. Для примера MATLAB не преобразует double на java.lang.Double для параметра типа Double.

Передайте java.lang.Object

Специальный случай существует, когда метод принимает аргумент java.lang.Object класс. Поскольку этот класс является корнем иерархии классов Java, можно передать объекты любого класса в аргументе. MATLAB автоматически преобразует аргумент в ближайший Java Object тип, который может включать автобоксирование в стиле Java. В этой таблице показано преобразование.

Аргумент MATLAB

Java- Object в пакетном java.lang

logical

Boolean

double

Double

single

Float

char скаляр

Character

string скаляр
непустые char вектор

String

uint8
int8

Byte

uint16
int16

Short

uint32
int32

Integer

uint64
int64

Long

string массив (нескалярный)
массив ячеек из векторов символов

String[]

Объект Java

Аргумент не изменен

массив ячеек

Object[]

Объект MATLAB

Неподдержанный

Передайте массив объектов

Вызов метода с аргументом, заданным как java.lang.Object или массив java.lang.Objectпередайте массив ячеек Java или MATLAB. MATLAB автоматически преобразует элементы массива ячеек в их типы Java, как описано в таблице Pass java.lang.Object. Массив Java является массивом, возвращаемым конструктором Java. Вы также можете создать массив Java в MATLAB, используя javaArray функция.

Передайте массив ячеек объектов Java

Чтобы создать массив ячеек из объектов Java, используйте синтаксис MATLAB {a1,a2,...}. Вы индексируете в массив ячеек объектов Java обычным способом с синтаксисом a{m,n,...}. Для примера создайте массив ячеек A:

a1 = java.lang.Double(100);
a2 = java.lang.Float(200);
A = {a1,a2}
A =

  1×2 cell array

    [1×1 java.lang.Double]    [1×1 java.lang.Float]

Передайте пустые матрицы, нулевые значения и отсутствующие значения

MATLAB преобразует пустую матрицу следующим образом.

  • Если аргумент является пустым символьным вектором, и параметр объявлен как String, затем MATLAB проходит в пустом (не null) Java String объект.

  • Во всех других случаях MATLAB преобразует пустой массив в Java null.

Пустой (0-length) Массивы Java остаются неизменными.

MATLAB преобразует <missing> значения в строках, чтобы null.

Перегруженные методы

При вызове перегруженного метода для объекта Java MATLAB сравнивает аргументы, которые вы передаете, с аргументами, заданными для методов. В этом контексте термин метод включает конструкторы. MATLAB определяет метод вызова и преобразует аргументы в типы Java в соответствии с правилами преобразования Java. Для получения дополнительной информации см. раздел «Передача массива объектов».

Когда вы вызываете метод Java, MATLAB гарантирует, что:

  1. Объект или класс (для статического метода) имеет метод с таким именем.

  2. Вызов передает то же количество аргументов хотя бы одного метода с таким именем.

  3. Каждый переданный аргумент преобразуется в тип Java, заданный для метода.

Если все эти условия удовлетворены, MATLAB вызывает метод.

При вызове перегруженного метода, если существует более одного кандидата, MATLAB выбирает тот с аргументами, которые лучше всего соответствуют вызывающим аргументам. Во-первых, MATLAB отклоняет методы, которые имеют типы аргументов, несовместимые с переданными аргументами. Для примера, если у метода есть double аргумент, a char аргумент несовместим.

MATLAB затем выбирает метод с самым высоким значением соответствия, которое является суммой значений соответствия всех его аргументов. Значение соответствия для каждого аргумента является соответствием базового типа минус различие между измерением массива MATLAB и измерением массива Java. Для получения информации о размерности массива см. Раздел «Как размеры массива влияют на преобразование». Если два метода имеют одинаковую пригодность, то выбирается первый, заданный в классе Java.

Похожие темы