Java 메서드에서 반환된 데이터 처리하기
Java® 메서드가 프리미티브 데이터형을 반환할 경우 MATLAB®은 프리미티브 반환 유형의 표에 나와 있는 대로 데이터를 변환합니다.
Java 메서드 시그니처에 java.lang.Object
유형의 반환 데이터가 지정된 경우 MATLAB은 java.lang.Object 반환 유형의 표에 나와 있는 대로 실제 반환된 유형을 변환합니다.
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은 위 표에 따라 값을 변환합니다. 자세한 내용은 Converting Object Array Elements to MATLAB Types 항목을 참조하십시오.
예
getData
메서드의 다음 시그니처를 살펴보십시오.
java.lang.Object getData()
getData
가 java.lang.Integer
객체를 반환할 경우 MATLAB은 그 값을 double
형으로 변환합니다.
Java 객체를 MATLAB 유형으로 변환하는 함수
메서드 시그니처에 java.lang.Object
가 지정된 경우 MATLAB은 객체 데이터 반환 값만 변환합니다. 시그니처에 다른 객체 유형이 지정된 경우 MATLAB은 값을 변환하지 않습니다. 예를 들어, 메서드 시그니처가 다음과 같을 때 MATLAB은 반환 값을 변환합니다.
java.lang.Object getData()
반면, 다음 메서드의 경우 MATLAB은 반환 값을 변환하지 않습니다.
java.lang.String getData()
Java 객체 데이터를 MATLAB 데이터로 변환하려면 다음 항목에 설명된 대로 MATLAB 함수를 사용하십시오.
MATLAB 숫자형으로 변환하기
Java 숫자형을 MATLAB 유형으로 변환하려면 double
같은 MATLAB 숫자형 함수를 사용하십시오. double
함수가 수행하는 동작은 사용자가 지정하는 객체의 클래스에 따라 다릅니다.
객체가
java.lang.Number
에서 파생된 클래스의 인스턴스인 경우 MATLAB은 이 객체를 MATLABdouble
형으로 변환합니다.객체가 숫자형 클래스의 인스턴스가 아닌 경우 MATLAB은
toDouble
메서드에 대한 클래스 정의를 확인합니다. MATLAB은 이 메서드를 호출하여 변환을 수행합니다.자신만의 고유한 클래스를 만드는 경우, 고유한 유형 변환을 지정하도록
toDouble
메서드를 작성하십시오.
참고
객체의 클래스가 java.lang.Number
에서 파생되지 않고 toDouble
메서드를 구현하지 않을 경우, double
함수는 오류 메시지를 표시합니다.
MATLAB string형으로 변환하기
java.lang.String
객체와 배열을 MATLAB string형이나 문자형 벡터로 변환하려면 MATLAB string
함수나 char
함수를 사용하십시오.
MATLAB 함수에 지정된 객체가 java.lang.String
클래스의 인스턴스가 아닌 경우 MATLAB은 toString
또는 toChar
메서드에 대한 클래스 정의를 확인합니다. 자신만의 고유한 클래스를 만드는 경우, string형 변환을 지정하도록 toString
또는 toChar
메서드를 작성하십시오.
참고
객체의 클래스가 java.lang.String
이 아니고 toChar
메서드를 구현하지 않을 경우 char
함수는 오류 메시지를 표시합니다.
MATLAB 구조체로 변환하기
Java 클래스가 필드 이름을 정의하는 경우, struct
함수를 사용하여 객체 데이터를 MATLAB 구조체로 변환하십시오.
java.awt.Polygon
객체를 반환하는 Java 메서드를 호출한다고 가정하겠습니다. 클래스는 필드 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.lang.Object 반환 유형 표에 따라 변환됩니다.
java.lang.Double
, java.awt.Point
및 java.lang.String
유형의 인수를 반환하는 Java 메서드를 호출한다고 가정하겠습니다. 이 예제를 실행하려면 다음 유형의 변수를 생성하십시오.
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');
각 배열을 셀형 배열로 변환합니다. MATLAB 함수에서 cellArray
를 사용할 수 있습니다.
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'