我有一个返回泛型类型列表的方法,方法如下所示。
protected <T extends SQLDataBean> List<T> getJavaListFromOracleArray(Array array) throws SQLException
然后我有一个名为 ReplacementBean 的对象,它扩展了 SQLDataBean。
在另一堂课中,我有一个List<ReplacementBean>
带有 set 方法的List<ReplacementBean>
我发现了什么,我不确定为什么我不能在集合中调用上面列出的方法。这意味着这会产生编译时错误:
setReplacements(this.getJavaListFromOracleArray(in.readArray()));
但是,以下编译并正常工作。
List<ReplacementsBean> temp = this.getJavaListFromOracleArray(in.readArray());
setReplacements(temp);
我也尝试在 set 方法中进行如下转换,但它也有编译时错误。
setReplacements((List<ReplacementsBean>)this.getJavaListFromOracleArray(in.readArray()));
有什么方法可以在调用我的 set 方法之前不必执行设置临时局部变量的两行过程?虽然它确实有效,但不必这样做会很好。
调用以下内容:
setReplacements(this.getJavaListFromOracleArray(in.readArray()));
导致错误setReplacements(List<ReplacementsBean>) is not applicable for the arguments List<SQLDataBean>
setReplacements 代码如下:
public void setReplacements(List<ReplacementsBean> replacements)
{
this.replacements = replacements;
}
另外,如果我尝试这个:
setReplacements((List<ReplacementsBean>)this.getJavaListFromOracleArray(in.readArray()));
我收到错误 Cannot cast from List<SQLDataBean>
to List<ReplacementsBean>
。