【问题标题】:Using Java generic classes in Matlab在 Matlab 中使用 Java 泛型类
【发布时间】:2011-05-26 16:54:55
【问题描述】:

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

【问题讨论】:

    标签: java generics matlab


    【解决方案1】:

    我不是 Matlab 专家,但我懂一些 java 知识。

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

    意思是

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

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

    【讨论】:

      【解决方案2】:

      您不能在 Matlab 中实例化参数化的 Java 类。这是因为 Matlab 是一种解释型语言。因此,在您的示例中,当您尝试时

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

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

      【讨论】:

      • 好吧,我担心是这样,但我想确定一下。
      • 那么如果我在matlab中构造一个ArrayList,是否可以在其中添加一个matlab对象呢? (每次我尝试添加一个对象,我都会得到No method 'add' with matching signature found for class 'java.util.ArrayList'.
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多