Eri*_*son 2 java generics warnings
以下方法会生成警告,但对我来说看起来很安全.我确定问题出在我身边:
public <S extends CharSequence> S foo(S s) {
return (S) new StringBuilder(s);
}
Run Code Online (Sandbox Code Playgroud)
看起来这总是会返回参数s.任何人都可以展示一个会导致此方法抛出异常的示例吗?
编辑: 我对这里是否需要泛型的问题不是特别感兴趣.相反,我正在寻找这种方法不安全的演示.
这是不安全的,因为虽然StringBuilder是CharSequence,但它不一定是S类型(事实上,它几乎肯定不会).你可以通过传入一个String方法来看到这个失败.这将StringBuilder使用您String的参数构建一个,然后尝试将您转换StringBuilder为String(将失败).
这里可能根本不需要使用泛型,这应该可以正常工作:
public CharSequence foo(CharSequence s) {
return new StringBuilder(s);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |