Matlab开关案例中的Java枚举

索斯滕

我目前正在尝试在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章