首页 > 解决方案 > 在不使用构建器、静态构造器或抛出异常的情况下,如何创建一个具有两个从不相等的整数的构造器?

问题描述

我有一种奇怪的感觉,即当构造函数编写不正确时,代码开始变得更加复杂。最近,我一直在尝试简化并坚持较低级别的 oop 原则,以使代码不会变成复杂的蜘蛛网。

https://softwareengineering.stackexchange.com/questions/181850/are-exceptions-an-oop-concept

我要问的问题可能是不可能的。

public class Foo
{
    private int x;
    private int y;

    public Foo(int x, int y)
    {
        this.x = x;
        this.y = y;
    }
}

总是这样---->foo.getX() != foo.getY();

标签: javaconstructor

解决方案


你根本做不到。

保证两个整数不相等的唯一方法是只接受一个并以保证不相等的方式从它导出第二个,例如通过加一个。

    public Foo(int x, int y)
    {
        this.x = x;
        this.y = x + 1; // guaranteed not to be equal to x.
    }

但是如果您需要接受两个值(例如,因为您需要比它们分开的更大的灵活性),唯一合理的做法是在它们相等时抛出异常。


推荐阅读