2016-03-11 3 views
0

Я хотел бы создать метод, который будет принимать любой тип класса и отправить его другому методу. и затем возвращает объект: Пример:Java Как отправить класс Тип в параметре

private Object getObjectFromData(Object object, String data) { 
    Object o = mapper.readValue(data,Object.class); 
    return o; 
} 

Ну, это работает. И делает именно то, что я хочу. Но назвать эту функцию я должен инициализировать один пустой проект: как показано ниже:

final Task t = new Task(); 
Task task = (Task)getObjectFromData(t,data); 

Можно ли как-то пропустить строку:

final Task t = new Task(); 

? Спасибо за ваш ответ.

+0

Пожалуйста, уточните вашу проблему или добавьте дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. См. Страницу «Как спросить», чтобы помочь прояснить этот вопрос. – Ferrybig

+0

@Ferrybig Прошу прощения за то, что я не сделал для вас проблемы. Но я не был уверен, чего хочу. – MrDoda

ответ

3

передайте Class экземпляр:

private Object getObjectFromData(Class clazz, String data) { 
    Object o = mapper.readValue(data,clazz); 
    return o; 
} 

и называем его следующим образом:

Task task = (Task) getObjectFromData(Task.class, data); 

Вы должны также сделать метод родовым (не использовать необработанный тип Class но использовать Class<T> вместо), что устраняет необходимость литья:

private <T> T getObjectFromData(Class<T> clazz, String data) { 

и назовите его следующим образом:

Task task = getObjectFromData(Task.class, data); 
+0

Woah, который был QUICK – Pickle

+1

Вам не нужен '(Task)' cast, который является точкой вопроса;) –

+1

@PeterLawrey Действительно, потому что 'Class' в идеале не должен использоваться как необработанный тип. – manouti

Смежные вопросы