一連のありふれたキャストを実行するライブラリが存在するかどうか疑問に思っています(基本的に、ほとんどの場合、実際には問題にならない、潜在的に危険なキャストの束のラッパーです)。たとえば、ライブラリに次のものがあるとします (簡潔にするために本文は省略されています)。
public interface LibraryInterface;
public static void doSomething(Collection<LibraryInterface> collection);
したがって、doSomething()
頑固に、可能なものよりも柔軟性の低いものしか取りません(つまりCollection<? extends LibraryInterface>
、次のような機能を提供するライブラリはありますか:
public static <T, U extends T> Collection<T> cast(Collection<U> collection);
を実装するクラスがあり、 がある場合LibraryInterface
、そのリストをキャストすることでList<MyLibraryInterfaceImpl>
引き続き使用できますか? doSomething()
( の本体にcast()
は、安全でないキャストが含まれていることが暗示されていますが、少なくともユーザーの観点からは、そのキャストは隠されているか、1 か所に集中しています)。
(また、コンパレータのようなものとは逆のことをするものもいいです)