Main Content

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 유형 — 배열

boolean

logical

logical

byte

double

int8

short

double

int16

int

double

int32

long

double

int64

float

double

single

double

double

double

char

char

char

예제

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 유형 — 스칼라

java.lang.Boolean

logical

java.lang.Byte

double

java.lang.Short

double

java.lang.Integer

double

java.lang.Long

double

java.lang.Float

double

java.lang.Double

double

java.lang.Character

char

java.lang.String

char

반환 인수가 Object의 서브클래스이거나 Object로 구성된 배열인 경우에는 변환되지 않습니다. 객체는 Java 객체로 유지됩니다. 그러나, 반환된 Object 배열의 요소를 참조할 경우 MATLAB은 위 표에 따라 값을 변환합니다. 자세한 내용은 Converting Object Array Elements to MATLAB Types 항목을 참조하십시오.

getData 메서드의 다음 시그니처를 살펴보십시오.

java.lang.Object getData()

getDatajava.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은 이 객체를 MATLAB double형으로 변환합니다.

  • 객체가 숫자형 클래스의 인스턴스가 아닌 경우 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 메서드를 호출한다고 가정하겠습니다. 클래스는 필드 xpointsypoints를 정의합니다. 이 예제를 실행하려면 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.Pointjava.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'

관련 항목