在Matlab中使用Java泛型类

时间:2010-12-16 17:27:09

标签: java generics matlab

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

3 个答案:

答案 0 :(得分:6)

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

myList = java.util.ArrayList<String>()

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

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

  1. 自java 5起支持泛型
  2. 泛型是编译时功能。它们也被称为“擦除”。
  3. 这意味着

    1. 检查您的系统上安装了哪个java并由matlab使用。可能它配置为使用java 1.4?
    2. 你能用其他IDE(不是matlab)编写代码,编译它们然后在Matlab中使用吗?可能它会解决你的问题。
    3. 以下链接可能对您有所帮助:http://www.mathworks.com/support/solutions/en/data/1-1812J/