開発者が非汎用 API を操作すると、通常、「チェックされていない」警告が表示されます。次の例を検討してください。
import java.util.AbstractList;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class IterableNodeList<T extends Node> extends AbstractList<T>
{
private NodeList list;
public IterableNodeList(NodeList list)
{
this.list = list;
}
public T get(int index)
{
return (T)this.list.item(index);
}
public int size()
{
return this.list.getLength();
}
}
もちろん、警告がないようにこれを書く努力をすることもできます:T
クラスの型パラメーターとコンストラクター引数を使用し、メンバー変数と呼び出しClass<T>
を一致させます。cast()
別の方法として、IDE 構成とビルド スクリプト (Maven POM など) を編集して、このコンパイラ警告を完全に無効にすることも考えられます。これを行った場合、コードはそのままになる可能性がありますが、それには欠点があるに違いないと確信しています。ただし、合理的で現実的な例は思いつきません。
@SuppressWarnings
この警告は、「ここに固執する、とにかく他に選択肢がない」よりも価値があります。- 結果のコードは実際には、警告を無視 (無効) した場合とは異なる (より安全な) 動作をします。
そのような例を考えたり、これらの「チェックされていない」警告をグローバルに無効にすることが悪い考えである別の理由を挙げたりできますか? それとも実際に良い考えですか?
アップデート
前の例は、実際には警告を引き起こしませんでした。いくつかの答えは、もはや意味がありません。ご不便おかけしてすみません。