Мне нужно что-то вроде динамического типа возврата из моей функции. Мой код в этот момент, как:Динамические типы возврата через java generics
@Repository
public class SswltDataDAO {
private static final Logger logger = LoggerFactory.getLogger(SswltDataDAO.class);
private JdbcTemplate jdbcTemplate;
@Autowired
@Qualifier("dataSource_sswlt")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List<Object> getSswltData(String tableName, String sql, Class className) {
List<Object> listOfOblects = null;
try{
listOfOblects = jdbcTemplate.query(sql, new BeanPropertyRowMapper(className));
}catch(Exception e){
logger.error("\n\nException while importing data from "+tableName+":\n", e);
listOfOblects = null;
e.printStackTrace();
}
return listOfOblects;
}
}
И это использование метода: dataImportFromSswltToIwproImp()
Class MainService {
public boolean dataImportFromSswltToIwproImp() {
.......
List<Object> list = sswltDataDAO.getSswltData("tbl_sswltdata_addresses", "select * from tbl_sswltdata_addresses", SswltdataAddresses.class);
.........;
}
}
Использование Дженерики Я хочу написать метод getSswltData() таким образом, что, а не возвращаемый List<Object>
, он должен динамически возвращать List<class name>
, т. е. список объектов типа класса, а не объектов класса объектов. Обратите внимание, что «Имя класса» - это класс, который передается во время вызова getSswltData(), и это будет динамическая часть кода.
Мне любопытно, что это все еще возможно или нет? Я достаточно гибкий, чтобы изменить любую часть моего кода, поэтому все предложения приветствуются.
Спасибо. просто интересно, как сделать в этой строке: listOfObjects = jdbcTemplate.query (sql, новый BeanPropertyRowMapper (className)); какие изменения мне нужно разместить в этой строке? – Shashank
В основном 'listOfObjects = (List) ...' - но, пожалуйста, прочитайте предупреждение, которое я представил в последнем предложении. – Thomas