Is it possible to construct a parameterized class in Matlab? For example in Java I could say ArrayList<String> myList = new ArrayList<String>(). I have tried myList = java.util.ArrayList<String>(), but that just gives an error saying "unexpected parenthesis or bracket". I am really looking to use my own parameterized classes, but if I can get the syntax for this, it should be sufficient.
3 Answers
You can't instantiate a parametrized Java class in Matlab. This is because Matlab is an interpreted language. So, in your example, when you try
myList = java.util.ArrayList<String>()
This code is immediately interpreted and run by Matlab (and the Java code compiled). But because Java has Type Erasure all type information for myList is immediately lost. This means in the context of Matlab syntax type parameters make no sense -- so they are syntactically invalid.
2 Comments
No method 'add' with matching signature found for class 'java.util.ArrayList'.)I am not a specialist in Matlab but I understand something in java.
- Generics are supported since java 5
- Generics are compile time feature. They are also called "erasures".
It means that
- Check which java is installed on your system and used by matlab. Probably it is configured to use java 1.4?
- Can you write you code using other IDE (not matlab), compile it their and then use in Matlab? Probably it will fix your problem.
The following link could probably help you: http://www.mathworks.com/support/solutions/en/data/1-1812J/