我有java enum
package com.moc;
public enum MyType {
s,
q,
p,
none,
}
在matlab(2012a)中,我加载了适当的jar,然后设置
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 's'.
和
The class com.moc.MyType has no property or method named 'p'.
为什么matlab不允许我获取's'和'p'枚举值?
P.S。
a = com.moc.MyType.q;
a.getClass.getDeclaredField('p')
返回
public static final com.moc.MyType com.moc.MyType.p
更新
com.moc.MyType.valueOf('p')有效。但问题仍然适合我。
答案 0 :(得分:2)
如this answer中所列,您可能需要稍微改一下它。有时Java将事物存储为$
而不是.
,因此如果您按下面列出的那样进行调用,它应该可以正常工作。
javaObject('com.moc.MyType$q')
答案 1 :(得分:1)
答案 2 :(得分:1)
我真的怀疑这是配置错误。 (我以前称之为makefile错误)。也就是说,我怀疑您实际加载到Matlab中的代码没有链接到您正在编写的Java代码,但它是旧版本。
要确认/反驳此类错误,请执行您可以执行的最小更改。例如,将q
更改为qq
并确认a = com.moc.MyType.qq;
在Matlab中有效。
如果确实有效,那我就错了。 如果没有,那么你需要完成编译/ jar'ing /加载过程,看看你有一个陈旧的文件。