我将得到一个值,它可以是long、int、string等,然后我需要分别创建LongObject、IntObject、StringObject等。
使用下面所示的方法重载(a)还是只使用elseif(b)会更快呢?
这可能不会有明显的性能差异。这可能是因为重载的方法与if/else实现方式类似。我不知道。
我也听到一些人说要测试一下。当然,我应该测试一下。如果有人知道这种重载是如何处理的,请告诉我。
请让我知道你的想法。
谢谢, jbu
b)
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判断才能使用重载方法。