matlab中的java enum切换案例

时间:2015-10-12 12:23:44

标签: java matlab enums

我目前正在尝试在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表达式必须是标量或字符串常量。

有没有人为实现我想要的行为而努力?

1 个答案:

答案 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