내 함수에서 동적 반환 유형과 같은 것이 필요합니다. 이 방법의 사용은자바 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>
즉 Object 클래스 객체가 아닌 클래스 유형 객체의 목록을 동적으로 반환해야합니다. "클래스 이름"은 getSswltData()를 호출하는 동안 전달되는 클래스이며 코드의 동적 부분입니다.
나는 여전히 그것이 가능한지 궁금합니까? 나는 모든 제안이 환영받을 수 있도록 코드의 일부분을 변경할 수있을 정도로 유연합니다. 가능 서명에 관해서는
감사합니다. 이 줄 자체에서 어떻게 캐스팅하는지 궁금합니다. listOfObjects = jdbcTemplate.query (sql, new BeanPropertyRowMapper (className)); 이 줄에 어떤 변화가 필요합니까? – Shashank
기본적으로'listOfObjects = (List) ...'-하지만 마지막 문장에서 제공 한 경고문을 읽으십시오. – Thomas