У меня есть плохо созданный объект контейнера, который скрепляет значения различных типов Java (String, Boolean и т.д ..)Java дженериков и типажей
public class BadlyCreatedClass {
public Object get(String property) {
...;
}
};
И мы извлечь значения из него таким образом
String myStr = (String) badlyCreatedObj.get("abc");
Date myDate = (Date) badlyCreatedObj.get("def");
Я вынужден написать какой-то новый код, используя этот объект, и я пытаюсь выяснить, есть ли способ сделать это. Более конкретно, какой из способов предпочтительнее?
Явная Cast
String myStr = (String) badlyCreatedObj.get("abc")
Date myDate = (Date) badlyCreatedObj.get("def");
Используя общий литой
public <X> X genericGet(String property) {
}
public String getString(String property) {
return genericGet(property);
}
public Date getDate(String property) {
return genericGet(property);
}
Использование Class.cast
<T> T get(String property, Class<T> cls) {
;
}
У меня есть рассмотрели несколько связанных вопросов на SO Java generic function: how to return Generic type, Java generic return type все они, кажется, говорят, что такое приведение является опасным, хотя я не вижу большой разницы между тремя, учитывая этот метод, который вы бы предпочли?
Благодаря