Trong C# tôi có thể làm thực sự này:phương pháp Generic trong Java mà không generic luận
//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>();
Nhưng đối với một số lý do tôi không thể có được nó để làm việc trong Java.
Điều tôi muốn làm là tạo một phương thức tĩnh trên một lớp cha, vì vậy các lớp con có thể được chuyển đổi thành XML.
//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/>");
thậm chí sẽ không biên dịch ... Bạn không thể viết T.class – pgras
Tôi không có nghĩa là viết T.class trong phương thức. Tôi đã nói như một kẻ thù. Và chức năng gọi có thể không (hoặc có thể nó đã được chuyển qua như một argumnet). –
The newInstance (T.class) là một bản sao và dán mà tôi không thấy. Vẫn còn câu hỏi có vẻ là về cách viết một phương pháp chung chung. –