私が機能を持っているとしましょう:
public Set<String> giveUp()
{
Set<String> alreadyGuessed = guessed;
guessed = new LinkedSet<String>();
//fill Guessed with possible words
anag(currentWord, "");
//Remove ones already guessed
Iterator<String> alGuessIterator = alreadyGuessed.iterator();
while (!alGuessIterator.done())
{
guessed.remove(alGuessIterator.get());
alGuessIterator.advance();
}
return guessed;
}
この関数を呼び出して、次のような行を使用して保存しようとすると:
LinkedSet<String> notGuessed = (LinkedSet<String>)wordGame.giveUp();
上記の関数の内部実装に関係なく、これは常に安全ですか? つまり、Guessed が ArraySet でなくても、完全に安全なキャストを維持できるのでしょうか? それとも、返されるインターフェイスのポイントを誤解していて、キャストの必要性を防ぐために「Set notGuessed」を持っているはずですか?
私の先生は授業に関する質問には役に立たず、危険なキャストを行うとすぐに 0 を返してくれます。