私には子クラスがあり、それぞれが他のメンバーと一緒に異なるタイプの価値を持っています。LongObject、IntObject、StringObjectなどが存在する可能性があります。
long、int、stringなどの値が与えられ、それぞれLongObject、IntObject、StringObjectなどを作成する必要があります。
以下に示すようにメソッドをオーバーロードする方が速いでしょうか(a)、または以下に示すようにelseifを使用するだけですか(b)?
目立ったパフォーマンスの違いではない場合があります。とにかく、オーバーロードされたメソッドはif/elseと同様の方法で実装されている可能性があります。知らない。
ただテストするように言っている人もいます。確かに、私はすべきです。また、誰かが知っているなら、このタイプのオーバーロードが内部でどのように処理されるかを知りたいです。
ご意見をお聞かせください。
ありがとう、jbu
a)
BaseObject getObject(long l)
{
return new LongObject(l);
}
BaseObject getObject(int i)
{
return new IntObject(i);
}
BaseObject getObject(String s)
{
return new StringObject(s);
}
...
b)
BaseObject getObject(Object x)
{
if(value is a long)
return new LongObject((Long)x);
else if(value is an int)
return new IntObject((Int)x);
else if(value is a String)
return new StringObject((String)x);
...
}
編集:私はすべての詳細を完全に追加しなかったと思います、あなたの何人かはそれを捕まえました。どちらの選択肢でも、オブジェクト/値を取得し、その値からそれがどのタイプであるかを判断する必要があります。したがって、オーバーロードされたメソッドを使用するためにも、何らかのif/elseを実行する必要があります。