我目前正在尝试在Matlab中使用Java程序包,到目前为止效果还不错。但是现在我需要根据Java枚举在Matlab中执行Switch的情况。这里是一个小的示例代码:
Java的:
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;
}
根据在MATLAB中使用Java枚举或公共静态字段,我可以使用
javaMethod('valueOf', 'abc.Parser$FileType', 'BINARY');
但是如果我在Switch的情况下使用此行:
parser = abc.Parser();
Switch(Parser.getFileType()){
case javaMethod('valueOf', 'abc.Parser$FileType', 'BINARY');
%TODO
break;
}
我得到了错误
??? SWITCH表达式必须是标量或字符串常量。
有没有人努力实现我想要的行为?
您的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句