(これは私の前の質問へのフォローアップです。)
というインターフェースがありCopyable
、これには単一の機能があります
Copyable getObjectCopy();
これは、他の多くのクラスで使用されます。この関数は常に を返すためCopyable
、未チェックのキャストが発生します。例:
@SuppressWarnings("unchecked") //Copy of itself is the same type.
ValidateValue<L> vvo = (ValidateValue<O>)this_toCopy.getValidator().getObjectCopy();
vvBlkA = vvo;
私の質問は、Josh Bloch の推奨事項に関するものです (Effective Java、第 2 版、項目 24)。
@SuppressWarnings("unchecked") アノテーションを使用するたびに、安全な理由を説明するコメントを追加してください。
彼の例は
// This cast is correct because the array we're creating
// is of the same type as the one passed in, which is T[].
@SuppressWarnings("unchecked")
T[] result = (T[]) Arrays.copyOf(elements, size, a.getClass());
return result;
(9/117 ページの下部を参照してください: http://www.infoq.com/resource/articles/bloch-effective-java-2e/en/resources/Bloch_Ch05.pdf )
私はこのアイデアが好きで、一緒にやりたいですgetObjectCopy()
@SuppressWarnings("unchecked") //Copy of itself is the same type.
ValidateValue<L> vvo = (ValidateValue<O>)this_toCopy.getValidator().getObjectCopy();
vvBlkA = vvo;
私のコメントは不自由に思えますが、これ以上のことは思いつきません。それが私の質問です:なぜこの unchecked-cast は正当なのですか? 実際に将来の開発者を助ける意味のあるコメントは何ですか?それは事実上、「ただ私を信頼してください」以上の意味がありますか?