我目前正在尝试在Matlab中使用Java包,到目前为止工作正常。但是现在我需要在Matlab中根据Java枚举做一个Switch案例。这里有一个小例子代码:
爪哇:
package abc;
class Parser {
enum FileType {
UNHANDLED,
XML,
BINARY
}
public getFileType(){
this.fileType;
}
private FileType fileType;
}
在Matlab中,我想做以下事情:
parser = abc.Parser();
Switch (parser.getFileType()) {
case abc.FileType.BINARY:
%TODO
break;
}
根据using Java enums or public static fields in MATLAB,我可以使用
访问枚举元素javaMethod('valueOf', 'abc.Parser$FileType', 'BINARY');
但是如果我在Switch案例中使用这一行:
parser = abc.Parser();
Switch(Parser.getFileType()){
case javaMethod('valueOf', 'abc.Parser$FileType', 'BINARY');
%TODO
break;
}
我收到错误
??? SWITCH表达式必须是标量或字符串常量。
有没有人为实现我想要的行为而努力?
答案 0 :(得分:1)
你的java没有编译。我将java更改为:
public class Parser {
enum FileType {
UNHANDLED,
XML,
BINARY
}
public FileType getFileType(){
return this.fileType;
}
private FileType fileType = FileType.XML;
public Parser(){
}
}
对于开关,我只是比较用char()包装的字符串。
例如:
javaaddpath('/home/shackle/NetBeansProjects/JavaApplication50/dist/JavaApplication50.jar')
import abc.Parser
p = Parser();
switch char(p.getFileType().toString())
case 'BINARY'
fprintf('type is binary')
break;
case 'UNHANDLED'
fprintf('type is UNHANDLED')
break;
case 'XML'
fprintf('type is XML')
break;
end