我想在java中编写两个布尔变量,这两个布尔变量的核心方式是一个永远是假的,一个是永远的。因此,如果将1设置为true,则另一个将自动更改为false。
答案 0 :(得分:10)
不要使用变量 - 使用方法。
使用变量之前
class Before {
boolean first;
boolean second;
boolean setFirst(boolean newValue) {
first = newValue;
second = !first;
}
boolean setSecond(boolean newValue) {
second = newValue;
first = !second;
}
}
使这样做更好:使用单个数据(这是你真正拥有的)并使用逻辑方法。
class After {
private boolean value;
boolean first() {
return value;
}
boolean second() {
return !value;
}
}
答案 1 :(得分:3)
使用setter和getter为您管理逻辑。
class Foo{
private boolean _bool1;
private boolean _bool2;
public void setBool1(boolean value)
{
_bool1 = value;
_bool2 = !value;
}
public void setBool2(boolean value)
{
_bool2 = value;
_bool1 = !value;
}
public boolean getBool1() { return _bool1 ;}
public boolean getBool2() { return _bool2 ;}
}
答案 2 :(得分:2)
使用智能设置器
class Blah {
private bool1 = true;
private bool2 = false;
setBool1(val) {
this.bool1 = val;
this.bool2 = !val;
}
setBool2(val) {
this.bool2 = val;
this.bool1 = !val;
}
// more setters/getters
}
注意我不确定你是否真的需要这个。如果2个布尔总是一直存在,为什么不只要有1个布尔并根据它做出决定,而不是根据2个布尔做出决定?
答案 3 :(得分:1)
我怀疑你想要boolean
而不是Boolean
我还怀疑你只需要一个字段,flag1和方法
public boolean getFlag2() {
return !flag1;
}
答案 4 :(得分:0)
public class Opposites {
protected boolean x = true;
protected boolean y = false;
public boolean getX() { return x; }
public boolean getY() { return y; }
public boolean toggle() { x=!x; y=!y; }
}
Opposites o = new Opposites();
o.getX(); // => true
o.getY(); // => false
o.toggle();
o.getX(); // => false
o.getY(); // => true
答案 5 :(得分:0)
你只能使用一个布尔变量:
boolean flag = true;
/*
flag is true
!flag is false
*/
...
flag = false;
/*
flag is false
!flag is true
*/
答案 6 :(得分:0)
与!myVar
相反,而不是有两个变量。如果你愿意,这可以是一个功能。