【发布时间】:2011-05-26 16:54:55
【问题描述】:
Matlab 可以构造参数化类吗?例如在 Java 中我可以说ArrayList<String> myList = new ArrayList<String>()。我试过myList = java.util.ArrayList<String>(),但这只会给出一个错误,说“意外的括号或括号”。我真的很想使用我自己的参数化类,但如果我能得到它的语法,那就足够了。
【问题讨论】:
Matlab 可以构造参数化类吗?例如在 Java 中我可以说ArrayList<String> myList = new ArrayList<String>()。我试过myList = java.util.ArrayList<String>(),但这只会给出一个错误,说“意外的括号或括号”。我真的很想使用我自己的参数化类,但如果我能得到它的语法,那就足够了。
【问题讨论】:
我不是 Matlab 专家,但我懂一些 java 知识。
意思是
以下链接可能对您有所帮助:http://www.mathworks.com/support/solutions/en/data/1-1812J/
【讨论】:
您不能在 Matlab 中实例化参数化的 Java 类。这是因为 Matlab 是一种解释型语言。因此,在您的示例中,当您尝试时
myList = java.util.ArrayList<String>()
此代码立即由 Matlab 解释和运行(以及编译的 Java 代码)。但是因为 Java 有Type Erasure,所以 myList 的所有类型信息都会立即丢失。这意味着在 Matlab 上下文中,语法类型参数没有意义——因此它们在语法上是无效的。
【讨论】:
No method 'add' with matching signature found for class 'java.util.ArrayList'.)
Kurt 是对的,但是一种解决方法是定义您自己的未参数化的 java 类。 public class MyList extends ArrayList<String> { }。然后在matlab中你可以写myList = MyList(),你会得到几乎所有与ArrayList<String>相同的方法签名。
【讨论】: