我正在使用一个旧的 API,它有一个返回 Collection<? 扩展 T>; API 表示返回的结果是不可修改的。根据《Effective Java》,返回有界通配符被认为是不好的形式。我已经实现了一个包装函数,因此新代码看起来很干净。确实如此
Collection<? extends T> c0 = oldAPI();
Collection<T> c = (Collection<T>)c0; // "unchecked cast" warning
return c;
Run Code Online (Sandbox Code Playgroud)
演员阵容在所有情况下都“安全”吗?最多?如果不是,有什么例子吗?
看起来演员阵容是安全的,并且经过有限的测试,一切都按预期进行。A@suppressWarnings("unchecked")避免发出警告。
也许安全的原因是返回的集合是不可修改的。