Java메서드에데이터하기
MATLAB데이터형과Java데이터형 간 매핑
MATLAB®데이터를 Java®메서드에 인수로 전달할 경우 MATLAB은 이 데이터를 Java 언어에서 가장 잘 나타낼 수 있는 유형으로 변환합니다. 데이터를java.lang
유형의 인수로 전달할 때 유형 매핑에 대한 자세한 내용은Java객체전달하기항목을참조하십시오。
다음 표의 각 행에는 MATLAB 데이터형과 함께, 그에 상응하는 Java 인수가 왼쪽부터 오른쪽으로 근사한 정도 순으로 나와 있습니다. MATLAB 데이터형(셀형 배열 제외)은 스칼라(1×1) 배열 또는 행렬일 수 있습니다. Java 데이터형은 스칼라 값 또는 배열일 수 있습니다.
matlab인수 | Java 파라미터 유형(스칼라 또는 배열) 가장 가까운 유형 <———————————————————————> 가장 거리가 먼 유형 |
||||||
---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|||
|
|
|
|
||||
|
|
||||||
|
|
||||||
|
|
|
|||||
객체로 구성된 셀형 배열 |
|
||||||
MATLAB 객체 |
지원 안 됨 |
배열 차원이 변환에 미치는 영향
차원이라는 용어는 배열의 요소를 지칭하는 데 필요한 첨자 개수를 의미합니다. 예를 들어, 5×1 배열의 경우 하나의 배열 첨자를 사용하여 개별 요소를 참조하므로 1차원입니다.
MATLAB 배열을 Java 배열로 변환할 때, MATLAB은 특수한 방식으로 차원을 처리합니다. MATLAB 배열에서, 차원은 배열의 비한원소 차원 개수입니다. 예를 들어, 10×1 배열의 차원은 1입니다. 반면, 1×1 배열의 차원은 0입니다. 스칼라 값의 요소는 참조할 수 없기 때문입니다. Java 코드에서는 중첩 배열의 수에 따라 차원이 결정됩니다. 예를 들어,双倍的[][]
의 차원은 2이고double
의 차원은 0입니다.
Java 배열의 차원 수가 MATLAB 배열의 차원 수n
과 일치하는 경우, 변환된 Java 배열은n
차원을 가집니다. Java 배열의 차원 수가n
보다 더 적을 경우, 변환 과정에서 첫 번째 차원부터 시작하여 한원소 차원을 삭제합니다. 남은 차원의 수가 Java 배열의 차원 수와 일치하면 변환이 중지됩니다. Java 배열의 차원 수가 n보다 더 많을 경우, MATLAB은 후행 한원소 차원을 추가합니다.
숫자를 정수 인수로 변환하기
Java 정수 파라미터를 받는 Java 메서드에 정수형을 전달할 때 MATLAB 변환은 Java에서의 정수형 간 변환과 동일합니다. 특히, 정수가 범위를 벗어나는 경우 이 정수는 파라미터 유형의 비트 수에 맞지 않습니다. 범위를 벗어난 정수에 대해 MATLAB은 가장 낮은n
개 비트를 모두 버립니다. 값n
은파라미터의수입니다。이변환를정수가대상유형표현되는이나이나최솟값으로으로변환변환되는되는되는되는되는되는되는되는되는정수형정수형정수형정수형정수형정수형정수형변환과。
인수가 부동소수점 숫자인 경우 MATLAB은 Java와 같은 방식으로 이 인수를 정수로 변환하지 않습니다. MATLAB은 먼저 부동소수점 숫자를 부호 있는 64비트 정수로 변환합니다(소수부는 잘림). 그러면 이 숫자는int64
형인수인처럼됩니다됩니다。
부동소수점 숫자가 -263에서 263사이범위벗어나면너무커서커서커서비트정수로표현없습니다없습니다없습니다없습니다없습니다。이matlab은은같은을합니다합니다합니다。
int
,short
및byte
파라미터 값은0
으로변환。long
파라미터 값은java.lang.Long.MIN_VALUE
로 변환.inf
값과-Inf
값은-1
로 변환.NaN
값은0
으로변환。
string형 인수 전달하기
java.lang.String
으로 정의된 인수를 갖는 Java 메서드를 호출하려면 MATLAB string형 또는 문자형 벡터를 전달하십시오. MATLAB은 이 인수를 JavaString
객체로변환합니다. Java 메서드에 의해 반환된String
객체를할있습니다있습니다。
메서드인수가String
유형으로 구성된 배열인 경우에는 string형 배열이나 문자형 벡터로 구성된 셀형 배열을 전달하십시오. MATLAB은 이 입력값을배열 차원이 변환에 미치는 영향에설명대로차원을하여하여String
객체로된된배열배열변환합니다합니다합니다。
Java객체 전달하기
java.lang.Object
이외의 Java 클래스에 속한 인수를 갖는 메서드를 호출하려면 해당 클래스의 인스턴스인 Java 객체를 전달해야 합니다. MATLAB은 MATLAB 유형을 JavaObject
유형으로 자동 변환하는 Java 오토박싱(Autoboxing)을 지원하지 않습니다. 예를 들어, MATLAB은双倍的
유형의 파라미터에 대해double
을java.lang.Double
로 변환하지 않습니다.
java.lang.Object
전달하기
메서드가java.lang.Object
클래스의 인수를 받는 특수한 경우가 있습니다. 이 클래스는 Java 클래스 계층 구조의 루트이므로, 어떤 클래스의 객체든지 인수로 전달할 수 있습니다. MATLAB은 자동으로 인수를 가장 가까운 JavaObject
유형으로 변환합니다. 이때 Java 스타일 오토박싱이 발생할 수 있습니다. 다음 표에는 이 변환이 나와 있습니다.
matlab인수 |
패키지 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Java객체 |
인수가 변경되지 않음 |
셀형 배열 |
|
MATLAB 객체 |
지원 안 됨 |
객체로된배열전달하기
java.lang.Object
또는java.lang.Object
의 배열로 정의된 인수를 갖는 메서드를 호출하려면 Java 배열이나 MATLAB 셀형 배열을 전달하십시오. MATLAB은java.lang.Object 전달하기표에대로셀형요소를그에상응하는하는하는유형유형유형자동으로변환합니다합니다。Java java java생성자에서되는배열입니다입니다。javaArray
함수를 사용하여 MATLAB에서 Java 배열을 생성할 수도 있습니다.
Java객체로구성된셀형배열전달하기
java객체로된셀형배열을만들려면만들려면만들려면{a1,a2,...}
를사용하십시오。구문a {m,n,...}
을사용적인으로으로,java객체로된셀형의요소를참조합니다참조합니다。예를,다음과다음과셀형배열A
를 만들어 보십시오.
a1 = java.lang.Double(100); a2 = java.lang.Float(200); A = {a1,a2}
a = 1×2个单元格数[1×1 java.lang.double] [1×1 java.lang.float]
빈,null,누락누락값하기하기
MATLAB은 빈 행렬을 다음과 같이 변환합니다.
인수가문자형벡터이고가가
String
으로선언된,matlab은无效的
이 아니라 빈 JavaString
객체를 전달합니다.그외의경우,matlab은은배열을을
无效的
로 변환합니다.
빈(길이0
) Java 배열은 변경되지 않은 상태로 유지됩니다.
MATLAB은 string형 내의<缺少>
값을无效的
로 변환합니다.
오버로드된 메서드
Java객체에서 오버로드된 메서드를 호출할 경우 MATLAB은 사용자가 전달하는 인수와 메서드에 대해 정의된 인수를 비교합니다. 이 맥락에서메서드라는용어생성자포함합니다。matlab은호출메서드결정하고하고하고변환변환에따라인수를를를를유형유형유형합니다。자세한내용은객체로된배열전달하기항목을참조하십시오。
Java 메서드를 호출할 경우 MATLAB은 다음 사항을 확인합니다.
객체 또는 클래스(정적 메서드의 경우)에 해당 이름의 메서드가 있는지 확인합니다.
호출 시 해당 이름을 가진 하나 이상의 메서드의 인수를 같은 수만큼 전달하는지 확인합니다.
전달된가메서드에정의정의된된유형유형변환합니다합니다합니다합니다。
이러한 조건이 모두 충족될 경우 MATLAB은 메서드를 호출합니다.
오버로드된 메서드를 호출할 때, 둘 이상의 후보가 있을 경우 MATLAB은 호출하는 인수와 가장 잘 맞는 인수를 갖는 메서드를 선택합니다. 먼저, MATLAB은 전달된 인수와 호환되지 않는 인수 유형을 갖는 메서드는 기각합니다. 예를 들어, 메서드가double
형 인수를 갖는 경우char
형 인수는 호환되지 않습니다.
그런 다음, MATLAB은 모든 인수의 적합도 값의 합인, 가장 높은 적합도 값을 갖는 메서드를 선택합니다. 각 인수의 적합도 값은 기본 유형의 적합도에서 MATLAB 배열 차원과 Java 배열 차원 사이의 차이를 뺀 값입니다. 배열 차원 수에 대한 자세한 내용은배열 차원이 변환에 미치는 영향항목을참조하십시오。두 메서드의 적합도가 같을 경우에는 Java 클래스에 먼저 정의된 메서드가 선택됩니다.