Вы можете создать объект с отложенным вычислением, например, Callable
public void method(Callable<Object> callable) {
// if you really need it
Object obj = callable.call();
}
Причина, по которой вы не видите этого чаще, состоит в том, что он обычно медленнее и сложнее.
Кстати: x(3)
не создаст объект, потому что на самом деле это x(Integer.valueOf(3))
, а valueOf
имеет кэш небольших значений Integer.
Для большинства приложений стоимость создания очень маленького простого объекта, такого как Integer, невеликапо сравнению со сложностью создания лениво оцененного значения.
Если вы хотите избежать создания объекта, вы можете иметь
public void x(Object o) ;
public void x(int i);
или
public void x(long l);
или
public void x(double d);
В следующем примере избегайте создания множества вариантов x
.