问题
So how can I do the following in Java?
List<String> strings = new ArrayList<String>();
JAXBElement<List<String>> jax = new JAXBElement<List<String>>(new QName("strings"), List<String>.class, strings);
The issue specifically occurs at List.class and the error returned is:
Multiple markers at this line
- List cannot be resolved to a variable
- String cannot be resolved to a variable
- Syntax error on token ">", void expected after this token
回答1:
You can't.
The closest approximation to what you want is to use (Class<List<String>>) List.class
.
This is because there is no List<String>.class
, because at runtime, List<String>
, List<Banana>
, List<FruitSalad>
, and List
are all the same in Java. This is deliberately done for a whole bunch o' reasons, and it's called type erasure.
来源:https://stackoverflow.com/questions/11401468/how-to-get-the-class-of-a-generics-defined-entity