2012-11-27 3 views
4

내가 MATLAB (2012A)에서 자바 열거Matlab java interop. 사용 열거는

package com.moc; 
public enum MyType { 
    s, 
    q, 
    p, 
    none, 
} 

내가 적절한 항아리로드가 값, 그리고 그것은뿐만 아니라 작동

a = com.moc.MyType.q; 
a = com.moc.MyType.none; 

을 설정합니다. 내가

a = com.moc.MyType.s; 

또는

a = com.moc.MyType.p; 

을 평가 후면 때 그러나 나는
The class com.moc.MyType has no property or method named 'p'. 

왜 matlab에 's'를 얻기 위해 저를 허용하지 않았다

The class com.moc.MyType has no property or method named 's'. 

예외를 얻을 및 'p'열거 형 값?

P.

a = com.moc.MyType.q; 
a.getClass.getDeclaredField('p') 

반환

public static final com.moc.MyType com.moc.MyType.p 

UPDATE

com.moc.MyType.valueOf ('P')가 작동합니다. 그러나 질문은 나와 관련이있다.

답변

1

흠,이게 작동합니다. 그냥 추측하고 있지만 대문자 열거 형 상수 (예 : com.moc.MyType.P)로 시도해 볼 수 있을지 모릅니다. 어쩌면 컨벤션에 의존하는 일이별로 없습니다.

1

나는 이것이 구성 오류라고 생각합니다. (내가 메이크 파일 오류를 호출하기 위해 사용했던 것). 즉, 실제로 Matlab에로드하는 코드가 작성중인 Java 코드와 연결되어 있지 않지만 이전 버전이라고 의심됩니다.

이런 종류의 오류를 확인/반박하려면 실행시 볼 수있는 가장 작은 변경을하십시오. 예를 들어, qqq으로 변경하고 a = com.moc.MyType.qq;이 Matlab에서 작동하는지 확인하십시오.

정상적으로 작동하면 잘못된 것입니다. 그렇지 않은 경우 컴파일/jar'ing/loading 프로세스를 통해 오래된 파일이있는 곳을 확인해야합니다.

+0

고맙습니다. 하지만 "com.moc.MyType.q"가 작동하고 "com.moc.MyType.p"가 아닌 이유는 무엇입니까? – user1312837

2

this answer에 나열된대로 조금 다르게 참조해야 할 수 있습니다. 때로는 Java가 . 대신 $ 대신 물건을 저장하기 때문에 아래에 나열된 전화를 걸면 제대로 작동합니다.

javaObject('com.moc.MyType$q') 
+0

감사합니다. 하지만 "com.moc.MyType.q"가 작동하고 "com.moc.MyType.p"가 아닌 이유는 무엇입니까? – user1312837

+0

정확히 모르겠지만 첫 번째 열거 형 값과 관련이 있다고 생각됩니다. 마지막 이유도 같은 이유로 작동 할 수 있지만 중간에있는 모든 것이 전혀 작동하지 않습니다. – PearsonArtPhoto