У меня есть дочерние классы, каждый из которых имеет свой тип значения вместе с другими членами. Это может быть LongObject, IntObject, StringObject и т. Д.
Мне будет дано значение, которое может быть long, int, string и т. Д., И я должен создать LongObject, IntObject, StringObject и т. Д. Соответственно.
Было бы быстрее перегрузить метод, как показано ниже (а), или просто использовать elseif, как показано ниже (б)?
Это не может быть заметной разницы в производительности. Может случиться так, что перегруженные методы в любом случае будут реализованы аналогично if / else. Я не знаю.
Я также слышу, как некоторые из вас говорят просто проверить это. Конечно, я должен. Я также хотел бы знать, как этот тип перегрузки обрабатывается под капотом, если кто-нибудь знает.
Пожалуйста, дайте мне знать, что вы думаете.
Спасибо,
JBU
а)
BaseObject getObject(long l)
{
return new LongObject(l);
}
BaseObject getObject(int i)
{
return new IntObject(i);
}
BaseObject getObject(String s)
{
return new StringObject(s);
}
...
б)
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);
...
}
edit: Я думаю, я не полностью добавил все детали, некоторые из вас это поняли. Для обоих вариантов мне все еще нужно получить объект / значение и по значению определить, какой это тип. Следовательно, мне все еще нужно выполнить if / else некоторого вида, чтобы даже использовать перегруженные методы.