Использование универсальных классов Java в Matlab - PullRequest
7 голосов
/ 16 декабря 2010

Можно ли построить параметризованный класс в Matlab? Например, в Java я мог бы сказать ArrayList<String> myList = new ArrayList<String>(). Я пробовал myList = java.util.ArrayList<String>(), но это просто выдает ошибку, говорящую "неожиданная скобка или скобка". Я действительно хочу использовать свои собственные параметризованные классы, но если я могу получить синтаксис для этого, этого должно быть достаточно.

Ответы [ 3 ]

6 голосов
/ 16 декабря 2010

Вы не можете создать экземпляр параметризованного Java-класса в Matlab.Это потому, что Matlab - это интерпретируемый язык.Итак, в вашем примере, когда вы пытаетесь

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

Этот код немедленно интерпретируется и запускается Matlab (и компилируется код Java).Но поскольку Java имеет стирание типов , вся информация о типах для myList немедленно теряется.Это означает, что в контексте параметров синтаксиса Matlab нет смысла - поэтому они синтаксически недопустимы.

5 голосов
/ 11 июля 2011

Курт прав, однако обходной путь - определить собственный класс Java, который не параметризован.public class MyList extends ArrayList<String> { }.Тогда в matlab вы могли бы написать myList = MyList() и получить почти все те же сигнатуры методов, что и ArrayList<String>.

1 голос
/ 16 декабря 2010

Я не специалист по 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...