我正在做一個項目來爲照片製作過濾器,其中我們用getter和setter方法設置了新的RGB值。Java getter返回的原始值,而不是由setter更新的值
public class Color {
private double red;
private double green;
private double blue;
public Color() {
this.setRed(1.0);
this.setGreen(1.0);
this.setBlue(1.0);
}
public Color(double red, double green, double blue) {
this.setRed(red);
this.setGreen(green);
this.setBlue(blue);
}
... (code for other functions after those tests pass)
public double getRed(){
return red;
}
public void setRed(double color1){
if (color1 <= 1.0){
if (color1 >= 0.0){
red = color1;
}
}
else if (color1>1.0){
red=1.0;
}
else if (color1<0.0){
red=0.0;
}
}
}
每個getter和setter都是getRed/setRed的重複。我檢查通過一個程序,我沒有訪問定義,但這是輸出我收到:
失敗的測試:
情景:3.1 - 打完電話後setRed(-1.0),getRed( )的返回值應該是0.0
顏色(1.0,1.0,1.0).setRed(-1.0) - 確定
顏色(1.0,1.0,1.0).getRed() - 預期0.0 - 1.0返回
所以setter的功能正如我所需要的那樣,但是getter正在返回原始值即這不是一個孤立的案例,我的每個getters都會在每個setter成功運行時爲其各自的顏色返回原始值(1.0)。
您是否每次運行getter時都創建一個新顏色? – JCOC611
每次測試運行都沒有新的顏色。我們使用相同的Color實例來測試set/get – jobosno
單行setter:'this.red = color1 <0.0? 0.0:color1> 1.0? 1.0:color1;' –