Java5から提供されるGenericsに実行時の利点があるかどうかを知りたかったのです。私は、クラス/コレクションの型安全性を実現し、ジェネリックのためのさまざまなオブジェクトを可能にすることができることを知っていますが、コンパイル時より前に実行時に得られるメリットはありますか?Java Generics - 任意の実行時の利点
答えて
のJavaのジェネリックはerasureを経由して、実行時に削除されるので、パフォーマンスは同一である必要があります。
それらに関するいくつかの情報は(http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Constructor.html#getTypeParameters%28%29で言う)反射によって提供されていますが、彼らはあなたのプログラムがより良い実行しないでください。
CoolBeans、私はコンパイル時間のメリット「を超えて」を意味するために彼を連れて行きました。
入手しました。説明をありがとう。 – CoolBeans
はい - それは非常に小さいです。
ジェネリックを使用する場合は、instanceof
を使用してどこにでもキャストする必要はないため、これらの命令のタイプチェックを行うバイトコード命令は生成されません。欠点は、コンパイルせずに古いバージョンのクラスにリンクすれば、実行時にかなり低レベルのエラーが発生することです。あなたが頻繁にそうでない場合は、キャストを必要とするタイトなループを使用している場合
はまだ、私はジェネリックは小さな、小さなビットを、物事をスピードアップする可能性があるとします。しかし、パフォーマンスの向上は、それらの使用のポイントではありません。
ほとんどのキャスト命令はコンパイラによって生成されますが、実際にジェネリックスを使わずにプログラムを書いたときには、instanceofテストも必要ありません。 –
- 1. Java実行プロセス:任意プロセスの実行時にバイトコードを表示
- 2. 実行JDBC Javaで任意のSQLコマンド
- 3. 実行時に任意のJavaクラスを作成する
- 4. 実行時に任意のコードを実行する
- 5. mapDispatchToProps:任意の点?
- 6. 任意のWindows実行ファイルのメモリ使用量と実行時間の測定
- 7. Javaバイトコードの任意のシーケンスを抽出して実行する
- 8. py.testでテストスイート(任意のテストコレクション)を実行
- 9. WiXで任意のC#コードを実行
- 10. Javascript任意ブロックJellyでの実行
- 11. Javaクローニングの利点
- 12. のJava:任意のサイズ
- 13. Java Generics for C#Gurus
- 14. directx11の任意の頂点バッファオブジェクト
- 15. 任意のJava enum引数
- 16. LinuxでJavaを実行する利点(Windowsから離れる)
- 17. EnumのJavaの利点
- 18. Java、Gson、リストとGenerics
- 19. 任意のフォルダからバッチファイルを実行する方法
- 20. チェック任意の点かの点(X0、Y0、Z0)は、Matlabの
- 21. 実行時に任意のテーマの色を設定する方法
- 22. 実行時に任意のオブジェクトの属性に一般的にアクセスする
- 23. PostgreSQLの任意の行を任意の列に変換する
- 24. Java Generics Capture
- 25. 任意の機能を実行する予想時間を測定
- 26. 任意のJavaハッシュツリーの実装ですか?
- 27. Eclipseから任意のサーバーソフトウェアを実行する方法は?
- 28. Java Genericsワイルドカードキャプチャ警告
- 29. Java実行時実行
- 30. メモ帳への書き込みは任意の時点でラップしますか?
「コンパイル時間よりも前にランタイムで取得する」とはどういう意味ですか?最初にコンパイルせずにどのように実行しますか? – CoolBeans
まあ、ランタイムのメリットは少ないです。ClassCastExceptions – samitgaur
ClassCastの例外の数が実際にはランタイムのメリットは少なくなります。コードが正しければ、どうにもなりません。利点は、正しいコードを書く方が簡単だということです。 – paulmurray