store()
javaLib.store() 시스템 함수는 메소드를 호출하고 리턴된 오브젝트(또는 널값)를 EGL Java™ 오브젝트 공간에 배치하며 오브젝트를 지정된 ID와 연관시킵니다.
ID가 오브젝트 공간에 이미 있는 경우 이 조치는
다음 단계와 동일합니다.
- ID에 대해 javaLib.remove()를 실행하여 해당 ID와 관련된 오브젝트를 제거합니다.
- javaLib.store()가 리턴하는 오브젝트를 지정된 ID와 관련시킵니다.
메소드가 오브젝트 대신 Java 기본요소를 리턴하는 경우 EGL은 기본요소를 나타내는 오브젝트를 저장합니다. 예를 들어, 메소드가 int를 리턴하면 EGL이 java.lang.Integer 유형의 오브젝트를 저장합니다.
javaLib.store() 및 이와 비슷한 함수가 작동하는 EGL Java 오브젝트 공간에 대한 자세한 정보는 "Java 액세스 함수"를 참조하십시오. EGL은 이전 버전과의 호환성을 위해 Java 액세스의 이 메소드를 유지보수합니다. 새 코드의 경우 보다 강력한 ExternalType 구문을 사용하십시오("ExternalType 파트" 참조).
구문
javaLib.store(
storeId javaObjId in,
identifierOrClass javaObjId in,
method STRING in
{, argument anyEGLPrimitive in} )
- storeId
- 리턴된 오브젝트를 식별할 이름으로 대소문자를 구분합니다. 입력은 STRING 유형과 지정 호환 가능한 표현식 또는 변수이며 objID로 캐스트됩니다. EGL은 인수 값의 시작과 끝에서 1바이트와 2바이트 공백을 제거합니다.
- identifierOrClass
- method를 호출 중인 클래스 또는 오브젝트입니다. 다음 엔티티 중 하나입니다.
- Java objID는 로컬 Java 오브젝트의 메소드를 호출합니다.
- 클래스 이름을 나타내는 문자열은 Java 클래스의 메소드를 호출합니다. EGL은 대소문자를 구분하는 인수 값의 시작과 끝에서 1바이트와 2바이트 공백을 제거합니다.
- method
- 호출할 메소드의 이름으로 대소문자를 구분하며 소괄호를 포함하지 않습니다. 입력은 STRING 유형과 지정 호환 가능한 표현식 또는 변수입니다. EGL은 인수 값의 시작과 끝에서 1바이트와 2바이트 공백을 제거합니다.
- argument
- 메소드에 전달되는 값입니다. 캐스트가 필요할 수 있습니다. "Java에
EGL 기본요소 맵핑"을 참조하십시오. Java 유형 변환 규칙이
적용됩니다. 예를 들어 int로 선언된 메소드 매개변수에 SMALLINT를
전달하는 경우 오류가 발생하지 않습니다. 정밀도를 잃지 않으려면
Java double의 경우 EGL FLOAT,
Java float의 경우 EGL SMALLFLOAT를 사용하십시오.
기타 EGL 유형 중 하나를 사용하면 반올림 오류가 발생할 수
있습니다. 아래에 표시된 것처럼 EGL 외부 유형의 값은 올바릅니다.
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer(); JavaLib.store("storeId" as "objID:java", "myId" as "objID:java", "myMethod", srps);
예제
다음 예제는 myMethod를 호출하고 결과를 storeID와 연관시킵니다.
javaLib.store("storeId" as "objID:java", "myId" as "objID:java",
"myMethod", myVar as "java:smallfloat");
오류 고려사항
v60ExceptionCompatibility 프로그램 특성이 설정되지 않거나 NO로 설정된 경우 예외로 인해 JavaObjectException이 발생합니다. 기타 오류는 RuntimeException을 발생시킬 수 있습니다.
v60ExceptionCompatibility 프로그램 특성이 YES로 설정된 경우에는 javaLib.store() 처리 중에 발생하는 오류가 sysVar.errorCode를 다음 표에 나열된 값으로 설정할 수 있습니다.
| sysVar.errorCode의 값 | 설명 |
|---|---|
| 00001000 | 클래스 초기화의 결과로 또는 호출된 메소드에서 예외를 처리했습니다. |
| 00001001 | 오브젝트가 널이거나 지정된 ID가 오브젝트 공간에 없습니다. |
| 00001002 | 지정된 이름의 공용 메소드, 필드 또는 클래스가 없거나 이를 로드할 수 없습니다. |
| 00001003 | EGL 기본 유형이 Java에서 예상되는 유형과 일치하지 않습니다. |
| 00001006 | 널에 대한 인수 캐스트의 클래스를 로드할 수 없습니다. |
| 00001007 | 메소드나 필드에 대한 정보를 가져오는 중에 SecurityException 또는 IllegalAccessException이 예외 처리(throw)되었거나 final로 선언된 필드의 값을 설정하려 했습니다. |
| 00001009 | 클래스 이름이 아닌 ID를 지정해야 합니다. 메소드 또는 필드가 정적이 아닙니다. |