私は完全に(私の.NETの背景で)理解できないJavaのジェネリックスの動作に遭遇しました。Javaのジェネリックで型の安全
public class TestGeneric<T>
{
public void get (Object arg)
{
T temp = (T) arg;
System.out.println(temp.toString());
return;
}
}
TestGeneric<Integer> tg = new TestGeneric<Integer>();
tg.get("Crack!!!");
私が手にClassCastExceptionが届かない理由を、さらに、アイデアに私は割り当てた後String
としてTEMPを参照して"Crack!!!"
の値を有する、教えてください。また、どのようにClassCastExceptionをスローすることができますか? Windows 7 x64でJDK 1.7.0_07を使用しています。
あなたは本当に「する必要がありますか」、あるいはより良い「ベストプラクティス」がありますか?私は、nitegazer2003のアプローチが好きです。は、明確に宣言されている/目に見える/簡潔でコード本体を乱雑にしていないためです。また、C#でジェネリックスをどのように制限することができるのかもよく似ています。 –
あなたは彼の質問に正しく答えてはいますが、ジェネリックを正しく使う方法の問題があります。なぜなら、何の最後にも「リターン」が必要なのでしょうか?必要以上に複雑な方法のように見えます。私はジェネリックをどのように使うべきかという答えを加えました。 – Jaxox