私の関数から動的戻り型のようなものが必要です。この時点で私のコードのようです:Javaジェネリックによる動的戻り型
@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()
私は方法getSswltDataを(書きたいジェネリックを使用しClass MainService {
public boolean dataImportFromSswltToIwproImp() {
.......
List<Object> list = sswltDataDAO.getSswltData("tbl_sswltdata_addresses", "select * from tbl_sswltdata_addresses", SswltdataAddresses.class);
.........;
}
}
)というし、このような方法で、 List<Object>
を返すと、List<class name>
つまりオブジェクトクラスオブジェクトではなくクラスタイプオブジェクトのリストを動的に返す必要があります。 「クラス名」はgetSswltData()の呼び出し中に渡されるクラスであり、これはコードの動的部分になります。
まだ可能であるかどうか不思議ですか?私はすべての提案が歓迎されるように私のコードの任意の部分を変更するのに十分柔軟です。可能性の署名については
ありがとうございました。この行自体をどのようにキャストするのだろうかというだけのことです:listOfObjects = jdbcTemplate.query(sql、new BeanPropertyRowMapper(className));私はこの行にどのような変更を加える必要がありますか? – Shashank
基本的に 'listOfObjects =(List)...' - しかし最後の文で私が提供した警告をお読みください。 – Thomas