java - 在不使用构建器、静态构造器或抛出异常的情况下,如何创建一个具有两个从不相等的整数的构造器?
问题描述
我有一种奇怪的感觉,即当构造函数编写不正确时,代码开始变得更加复杂。最近,我一直在尝试简化并坚持较低级别的 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();
解决方案
你根本做不到。
保证两个整数不相等的唯一方法是只接受一个并以保证不相等的方式从它导出第二个,例如通过加一个。
public Foo(int x, int y)
{
this.x = x;
this.y = x + 1; // guaranteed not to be equal to x.
}
但是如果您需要接受两个值(例如,因为您需要比它们分开的更大的灵活性),唯一合理的做法是在它们相等时抛出异常。
推荐阅读
- angularjs - 在 angularjs 中创建第一个项目时遇到此错误?
- ruby-on-rails - Rails / Tests with rspec : 有没有办法测试 Rails 查询中包含的内容
- node.js - 等待/重新连接,直到可以建立 TCP 客户端连接?
- ios - 如何将实时图像加载到 UIImageView
- vb.net - 当焦点设置为 TabControl 时,ListBox Click 事件丢失
- python - 卷积层特征图上的特殊功能
- angular - 带有 target="_blank" 返回 PDF 的表单在主屏幕网络应用程序中不起作用
- docker - 如何配置 IdentityServer4 (DotNet Core) 在 Nginx 反向代理中工作
- python - 如何在opencv python中调整PNG图像的大小?
- c# - GetHashCode() 的 Visual Studio 默认实现