Java中的重复方法

Java中的重复方法,java,methods,Java,Methods,我的问题可能很基本,但这是我以前从未做过的事情,所以我假设它在Java中是可能的(我肯定是,我只是不知道怎么做)。基本上,我有3个要操作的对象(3BufferedImages)。例如,我希望能够更改亮度和对比度,我可以这样做。通过这样做,我必须为每个图像创建一个单独的方法,其中代码完全相同。例如: public void increaseBrightnessGreen() { RescaleOp rescaleOp = new RescaleOp(1.0f, 10, null);

我的问题可能很基本,但这是我以前从未做过的事情,所以我假设它在Java中是可能的(我肯定是,我只是不知道怎么做)。基本上,我有3个要操作的对象(3
BufferedImage
s)。例如,我希望能够更改亮度和对比度,我可以这样做。通过这样做,我必须为每个图像创建一个单独的方法,其中代码完全相同。例如:

public void increaseBrightnessGreen() {
    RescaleOp rescaleOp = new RescaleOp(1.0f, 10, null);
    rescaleOp.filter(greenImage, greenImage);
    updateGreen();
}
然后对红色和蓝色进行重复,然后再重复3次以降低亮度,这是相当多的代码,它们正在做非常类似的事情。当然,这种情况非常常见,亮度示例只是众多示例中的一个,导入图像的方法是相同的,只是更改了一些变量,对比度也与上面类似。我不知道这是否重要,但我所有的代码都在一个单独的类中


正如我所说,我确信有一种方法可以减少所有这些多余的代码重复,我只是不知道如何做。

让该方法接受它应该修改的参数。它还可以接受
重新缩放
,因此您不需要创建它3次(并允许不同的
重新缩放
s)

public void increaseBrightness( BufferedImage image )
{
     RescaleOp rescaleOp = new RescaleOp( 1.0f, 10, null );
     rescaleOp.filter( image, image );
     // Don't know what updateGreen does but you could probably do something similar there
     updateImage( image );
}
然后,使用要增加亮度的图像调用该方法

increaseBrightness( greenImage );
increaseBrightness( redImage );
increaseBrightness( blueImage );

并在创建
重新缩放后调用

RescaleOp rescaleOp = new RescaleOp( 1.0f, 10, null );
increaseBrightness( greenImage, rescaleOp );
increaseBrightness( redImage, rescaleOp );
increaseBrightness( blueImage, rescaleOp );

当然,有一种方法可以避免重复方法,使其更通用!但在本例中,您也必须重复足够的代码

首先,在课堂上做3个静态:

static int GREEN = 1;
static int RED = 2;
static int BLUE = 3;
然后,让你的方法成为“一对所有”

public void adjustBrightness(int color, boolean increase) {


    if (increase){
         if (color == BLUE){

        //code for blue increment

        }
         if (color == GREEN){

        //code for green increment

        }
         if (color == RED){

        //code for red increment

        }
    else{    //decrease brightness


         if (color == BLUE){

        //code for blue 

        }
         if (color == GREEN){

        //code for green 

        }
         if (color == RED){

        //code for red 

        }


    }
 }
您可以很好地使用 调整亮度(蓝色,真实)

或者,如果您想让它更像本地语音,请再做两个静态:

static boolean INCREASE = true;
static boolean DECREASE = false;
因此,现在您可以:

adjustBrightness(BLUE, INCREASE);

与上一个问题相同;

这个问题似乎与主题无关,因为它是关于代码改进而不是代码修复的。请参阅这是本体图的位置。您正在谈论将参数传递给方法吗?因此您将调用
increaseBrightness(图)
该函数将处理R、G和B通道?然后您肯定可以删除
递增亮度绿色
递增亮度红色
递增亮度蓝色
方法,并将它们组合成一个。在有
枚举
的情况下,不要使用这样的静态。它们增加了类型s的优点安全,如果你真的坚持使用静态,至少让它们成为最终的。我当然同意,你是完全正确的。它们必须是最终的。。。
adjustBrightness(BLUE, INCREASE);