Если вы не хотите, чтобы объект должен быть создан, не называйте new
. Вызов new
всегда создает объект, даже если он затем отбрасывается из-за исключения. Если вы просто хотите избежать звонка от , получая объект в результате вызова конструктора, вы можете сделать свой конструктор исключительным. Если вы хотите, чтобы они просто получали нулевую ссылку, вы не можете сделать это в конструкторе.
Однако, вы могли бы иметь статический метод вместо этого, который затем условно вызовов new
или возвращают:
public class A
{
public static A createIfNonNegative(int i)
{
return i < 0 ? null : new A();
}
}