teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正に追記

2016/08/08 12:23

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,2 +1,6 @@
1
1
  返り値としてジェネリクスの型を扱う際には、コンパイル後はキャストで整合性を取っています。
2
- T extends Numberの場合、扱う型がNumberとして扱えることは確定なので、コンパイル後はNumber型として書いたようにコンパイルされます。これをIntegerという型を使ってインスタンス化した場合、getメソッドは返ってきたNumberをIntegerにキャストすることで、あたかもgetメソッドの返り値がIntegerであるようにしているのです。
2
+ T extends Numberの場合、扱う型がNumberとして扱えることは確定なので、コンパイル後はNumber型として書いたようにコンパイルされます。これをIntegerという型を使ってインスタンス化した場合、getメソッドは返ってきたNumberをIntegerにキャストすることで、あたかもgetメソッドの返り値がIntegerであるようにしているのです。
3
+
4
+ > このコードのようにしてインスタンスを生成することはできないというのはなぜでしょうか。
5
+
6
+ 当該クラスがこのコードで使っているような「引数無しのコンストラクタ」を持っている保証がありません。