「オーバーロードを注意して使用する」です。
結論:オーバーロードは極力使うな。特に引数パラメータ数が同じ時は。
オーバーロードはプログラマを混乱させる。
興味深い題材を2つ挙げる。
◆オーバーロードとオーバーライドのコンパイル時の違い。
オーバーロードされたメソッドはコンパイル時に選択される。 → 静的
オーバーライドはメソッドが呼び出されたオブジェクトの実行時の型に基づいて選択 → 動的
この事実から、オーバーロードしたメソッドで型をチェックさせようとすると、コンパイル時の型が認識され、型チェックが正しく動作しない。
しかし、オーバーライドは動的なので大丈夫。
◆SetとListのremoveメソッド
これらのremoveメソッドに、Primitive型のint値を渡すと、意図しない値が削除されてしまうことがある。
これは、removeメソッドがListかつint型に関連するメソッドが2種類あり、それは引数の型が異なるが、引数の数が同じであることから問題が発生する。
問題は、Java1.5から導入されたオートボクシング機能により引き起こされる。
remove(int)とremove(Integer)によって振る舞いが異なる。remove(int)は、リストから指定された位置の値を削除します。
一方、remove(Integer)は、渡された引数の値(要素)を削除します。
この違いをプログラマに意識させるのは、混乱を招く、というのもその通りですね。
ラベル
RoR
WSUS
MECM
SCCM
環境構築
WindowsServer2016
更新プログラム
Python
Eclipse
GAE
Macports
AWS
Django
GoCilpse
Hibernate
PeerCache
SQL
SSL
SchUseStrongCrypto
TLS
VPN
WindowsServer2019
bootstrap
emacs
gcc
git
go
haml
react
AmazonSES
Apache Derby
BranchCache
CB2207
CleanCode
Database
Defender
DeltaDownload
Edge
EffectiveJava
GPO
MAILER-DAMON
MCM
RC4
RDS
Report
ReportingServices
Route53
SQLServer2017
Spring
StreamCipher
SupportBlog
Vagrant
Wireshark
WorkMail
Xcode
amazon
android
ccmcache
certificate
gdb
golang
oauth
pg
registry
sup
w3wp
webapp
イネーブルメントパッケージ
インプレースアップグレード
バージョン管理
帯域外リリース
有効化パッケージ
東プレ
配布ポイント
0 件のコメント:
コメントを投稿