Java 如何检查未设置的对象是否具有属性
我试图形成一个方法来调用一个对象,以检查它是否包含类中的某些属性 这是我到目前为止尝试过的代码Java 如何检查未设置的对象是否具有属性,java,class,attributes,Java,Class,Attributes,我试图形成一个方法来调用一个对象,以检查它是否包含类中的某些属性 这是我到目前为止尝试过的代码 public class BoundingBox { public int x, y, width, height; public BoundingBox() { } public Integer getX() { return x; } public void setX(Integer x) { this.x
public class BoundingBox {
public int x, y, width, height;
public BoundingBox() {
}
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer Y) {
this.y = y;
}
public boolean contains(int x, int y) {
if (x == getX() & y == getY()) {
return true;
} else {
return false;
}
}
}
但是,当我创建了所有属性值均为10的对象,并使用object.contains(15,15)对其进行测试时,在Java中它不会返回false,运算符
&
可能具有不同的含义:
:按位运算符和
:逻辑运算符&&
if(x==getX()&y==getY()){
中,您使用了&
位运算符,而不是&&
逻辑运算符另外,
setY
方法中有一个输入错误,正如@alvinavord所说,将int
与Integer
进行比较可能会产生意想不到的结果
像这样更改代码,它将工作:
public class BoundingBox {
public int x, y, width, height;
public BoundingBox() {
}
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}
public boolean contains(int x, int y) {
return getX().equals(x) && getY().equals(y);
}
}
替代代码 或者,如果没有特别的理由保留
整数
变量,您可以这样更改代码:
public class BoundingBox {
public int x, y, width, height;
public BoundingBox(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public boolean contains(int x, int y) {
return getX() == x && getY() == y;
}
}
您在contains中的测试缺少一个符号AND,它应该是&&而不是&。单个符号AND是位AND,而不是逻辑AND。您的
setY
方法有一个错误:
public void setY(Integer Y) {
this.y = y;
}
Y是大写字母,这就是为什么this.Y=Y
不起作用的原因。这行代码毫无意义,这就是为什么在contains()
方法中比较Y时得到false的原因。
将其更改为:
public void setY(Integer y) {
this.y = y;
}
比较int和Integer也有一些问题。最好为getter返回int。这并不能解释为什么他的测试返回true。@Joe,他的测试总是返回false,而不是true(仅当y等于0且此.x=x时);Bitwise&operator在本例中的作用正如作者所期望的。对,我在回答中指出了这一点。如果文件被声明为int,为什么方法中会有整数参数而不仅仅是int?嗯,他没有说明它们存在的原因,所以我保留了它们。但就我个人而言,我不认为它们是needed。我已将代码更改为此,但即使输入了正确的x和y值,该方法仍会得到错误的结果。它仅在0时返回true?@hh\u vv我猜
x
和y
在代码中没有正确初始化。我已更新了备用代码。我已亲自测试过,它是否有效。请告诉我它是否有效把这个问题告诉你。