如何在不使用条件 if 语句的情况下设置 class 不变量
How to set class invariants without using conditional if statements
我有一个 class 叫做像素。我正在制作一个构造函数,它接收单个像素的红色、绿色、蓝色、alpha 值。我怎样才能让程序只接受这些有效值(例如 0 到 255)而不使用 if 语句?
下面是我的 class:
public class Pixel {
public int redPix;
public int bluePix;
public int greenPix;
public int alpha;
public Pixel(int redPix , int bluePix , int greenPix , int alpha) {
this.redPix = redPix;
this.bluePix = bluePix;
this.greenPix = greenPix;
this.alpha = alpha;
}
public void setRed(int redPix) {
this.redPix = redPix;
}
public int getRed() {
return(redPix);
}
public void setBlue(int bluePix) {
this.bluePix = bluePix;
}
public int getBlue() {
return(bluePix);
}
public void setGreen(int greenPix) {
this.greenPix = greenPix;
}
public int getGreen() {
return(greenPix);
}
public void setAlpha(int alpha) {
this.alpha = alpha;
}
public int getAlpha() {
return(alpha);
}
public static void main(String[] args){
}
}
很可能,你能做的就是像这样编写方法助手:
private void checkArg(int arg) {
if (arg < 0 || arg > 255) {
throw new IllegalArgumentException("Wrong argument: " + arg);
}
}
然后在所有方法的开头使用它。
您可以使用断言来指定 class 不变量。它实际上被推荐用于私有方法。
assert x >= 0 && x <= 255;
我有一个 class 叫做像素。我正在制作一个构造函数,它接收单个像素的红色、绿色、蓝色、alpha 值。我怎样才能让程序只接受这些有效值(例如 0 到 255)而不使用 if 语句? 下面是我的 class:
public class Pixel {
public int redPix;
public int bluePix;
public int greenPix;
public int alpha;
public Pixel(int redPix , int bluePix , int greenPix , int alpha) {
this.redPix = redPix;
this.bluePix = bluePix;
this.greenPix = greenPix;
this.alpha = alpha;
}
public void setRed(int redPix) {
this.redPix = redPix;
}
public int getRed() {
return(redPix);
}
public void setBlue(int bluePix) {
this.bluePix = bluePix;
}
public int getBlue() {
return(bluePix);
}
public void setGreen(int greenPix) {
this.greenPix = greenPix;
}
public int getGreen() {
return(greenPix);
}
public void setAlpha(int alpha) {
this.alpha = alpha;
}
public int getAlpha() {
return(alpha);
}
public static void main(String[] args){
}
}
很可能,你能做的就是像这样编写方法助手:
private void checkArg(int arg) {
if (arg < 0 || arg > 255) {
throw new IllegalArgumentException("Wrong argument: " + arg);
}
}
然后在所有方法的开头使用它。
您可以使用断言来指定 class 不变量。它实际上被推荐用于私有方法。
assert x >= 0 && x <= 255;