Java中的重复方法

时间:2013-12-11 21:42:13

标签: java methods

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

public void increaseBrightnessGreen() {
    RescaleOp rescaleOp = new RescaleOp(1.0f, 10, null);
    rescaleOp.filter(greenImage, greenImage);
    updateGreen();
}

然后重复红色和蓝色,然后再重复3次以降低亮度,这是相当多的代码,这是非常相似的东西。当然,这种情况经常适用,亮度示例只是其中的一个,导入图像的方法是相同的,除了更改一些变量和对比度也类似于上面。我不知道这是否重要,但我的所有代码都在一个单独的类中。

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

2 个答案:

答案 0 :(得分:1)

让方法接受它应该修改的参数。它也可以包含RescaleOp,因此您无需创建3次(并允许使用不同的RescaleOp

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的图像调用方法。

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

public void increaseBrightness( BufferedImage image, RescaleOp rescaleOp )
{
     rescaleOp.filter( image, image );
     // Don't know what updateGreen does but you could probably do something similar there
     updateImage( image );
}

并在创建RescaleOp

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

答案 1 :(得分:0)

当然,有一种方法可以不重复方法并制作更多功能的方法!但是你也必须在这个例子中重复足够的代码..

首先在你班上制作3个静力学:

static int GREEN = 1;
static int RED = 2;
static int BLUE = 3;

然后为所有

制作你的ONE方法
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 

        }


    }
 }

你可以很好地调用这个方法     adjustBrightness(BLUE,true);

或者如果你想让它更像本地语言,那就再制作2个静态词:

static boolean INCREASE = true;
static boolean DECREASE = false;

所以现在你可以:

adjustBrightness(BLUE, INCREASE);

与最后一个相同;