在Matlab中使用Javagenerics类

是否可以在Matlab中构造参数化类? 例如在Java中我可以说ArrayList myList = new ArrayList() 。 我尝试过myList = java.util.ArrayList() ,但这只是一个错误,说“意外的括号或括号”。 我真的希望使用自己的参数化类,但如果我能得到这个的语法,那就足够了。

您无法在Matlab中实例化参数化的Java类。 这是因为Matlab是一种解释性语言。 所以,在你的例子中,当你尝试

 myList = java.util.ArrayList() 

此代码由Matlab(以及编译的Java代码)立即解释和运行。 但由于Java具有Type Erasure ,myList的所有类型信息都会立即丢失。 这意味着在Matlab的语境中,语法类型参数毫无意义 – 因此它们在语法上是无效的。

Kurt是对的,但是解决方法是定义你自己的没有参数化的java类。 public class MyList extends ArrayList { } 。 然后在matlab中你可以写myList = MyList() ,你会得到几乎所有与ArrayList相同的方法签名。

我不是Matlab的专家,但我对java有所了解。

  1. 从java 5开始支持generics
  2. generics是编译时function。 它们也被称为“擦除”。

这意味着

  1. 检查系统上安装了哪个java并由matlab使用。 可能它配置为使用java 1.4?
  2. 你能用其他IDE(不是matlab)编写代码,编译它们然后在Matlab中使用吗? 可能它会解决你的问题。

以下链接可能对您有所帮助: http : //www.mathworks.com/support/solutions/en/data/1-1812J/