matlab switch case中的java枚举
Posted
技术标签:
【中文标题】matlab switch case中的java枚举【英文标题】:java enum in matlab switch case 【发布时间】:2015-10-12 12:23:43 【问题描述】:我目前正在尝试在 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;
根据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 表达式必须是标量或字符串常量。
有没有人可以解决我想要的行为?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于matlab switch case中的java枚举的主要内容,如果未能解决你的问题,请参考以下文章