In C# ich tatsächlich tun:generische Methode in Java ohne generisches Argument
//This is C#
static T SomeMethod<T>() where T:new()
{
Console.WriteLine("Typeof T: "+typeof(T));
return new T();
}
//And call the method here
SomeMethod<SomeClassName>();
Aber aus irgendeinem Grunde, warum ich es nicht in Java zu arbeiten bekommen.
Die Sache, die ich tun möchte, ist, eine statische Methode für eine Oberklasse zu erstellen, damit die Unterklassen in XML konvertiert werden können.
//This is Java, but doesn't work
public static T fromXml<T>(String xml) {
try {
JAXBContext context = JAXBContext.newInstance(T.class);
Unmarshaller um = context.createUnmarshaller();
return (T)um.unmarshal(new StringReader(xml));
} catch (JAXBException je) {
throw new RuntimeException("Error interpreting XML response", je);
}
}
//Also the call doesn't work...
fromXml<SomeSubObject>("<xml/>");
wird nicht einmal kompilieren ... Sie können nicht schreiben T.class – pgras
Ich wollte nicht schreiben T.class in der Methode. Ich sagte als Argumnet. Und die aufrufende Funktion darf nicht (oder mag sie als argumnet bestanden haben). –
Die newInstance (T.class) war eine Kopie & Paste die ich nicht sah. Immer noch scheint die Frage zu sein, wie man eine generische Methode schreibt. –