Ich versuche, einen Zieltyp zu verwenden, um eine Sammlung wörtlichen dem Typen angeben:Wie wird der Zieltyp für Sammlungsliterale angegeben?
val java.util.HashMap<String,String> map = #{
'a' -> 'b'
}
Aber ich bekomme:
HelloWorld.java:212: error: incompatible types: Set<Object> cannot be converted to HashMap<String,String>
final HashMap<String, String> map = Collections.<Object>unmodifiableSet(CollectionLiterals.<Object>newHashSet(_mappedTo, _mappedTo_1, _mappedTo_2, _mappedTo_3));
Beachten Sie, dass dies ein Java-Kompilierungsfehler ist, kein Xtend ein. Aus irgendeinem Grund versucht Xtend, einen Set
zu generieren, obwohl der Zieltyp ein HashMap
ist.
Wenn ich jedoch den Zieltyp in Map
ändere, erzeugt es eine Karte wie erwartet.
Die Xtend docs sagen
Zusätzlich Sammlung Literale xtend unterstützt unveränderliche Sammlungen und Arrays zu erstellen, auf dem Zieltyp abhängig
so dachte ich, dass ich die Art der unmodifiable Karte steuern konnte ich zurück.
Xtend Version: 2.9.0
Schön. Nachdem ich deine Antwort gesehen hatte, fand ich eine [ähnliche Lösung] (http://stackoverflow.com/a/7345751/498594) für reines Java. – Kelvin