3

(これは私の前の質問へのフォローアップです。)

というインターフェースがあり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 は正当なのですか? 実際に将来の開発者を助ける意味のあるコメントは何ですか?それは事実上、「ただ私を信頼してください」以上の意味がありますか?

4

1 に答える 1