【问题标题】:Passing a method as a parameter in JAVA在JAVA中将方法作为参数传递
【发布时间】:2017-08-21 20:40:25
【问题描述】:

我正在寻找如何在 Java 中将方法作为参数传递。我发现的每种方法都不适合我的问题。我正在做一个 Android 图像处理应用程序,我想让每个处理算法都在一个线程中运行。

问题是我发现的每个方法(lambda,Callable)都不起作用。这是我的 ImageProcessing 类,因此您可以看到不同的原型。

public class ImgProcessing {

    private static Img image;

    public static void colorize(int chosencolor) {
        //Stuff
    }

    public static void histogramEqualization() {
        //stuff
    }

    public static void extendDynamism() {
        //stuff
    }

    public static void toGray() {
        //stuff
    }

    public static void convolution(int n, int typeFilter) {
        //stuff
    }

    private static void calculConvolution(float[][] filtermatrix, int sizefilter) {
        //stuff
    }

    public static void overexposure() {}

    public static void isolate(int colorValue) {

    }

    public static void sepia() {

    }
}

这里的目标是将像素阵列切割成许多部分作为处理器核心,并创建一个线程来处理阵列的一部分。 我试图避免代码重复,所以我想要一个通用的 Thread 方法,我将我的处理方法传递给它。

类似:

public class Worker implements Runnable {
    private final int numberOfIterations;
    private final float[] x = new float[12000];
    Func myFunc;

    public Worker(int numberOfIterations, Func myFunc) {
        this.numberOfIterations = numberOfIterations;
        this.myFunc = myFunc;
    }

    public void run() {

    }

    public void initThread{
        // *** Main Thread ***
        Thread[] threads = new Thread[8];

        for (int i = 0; i < 8; i++) {
            //Creating threads and calling myFunc method.
        }

        for (int i = 0; i < 8; i++) {
            threads[i].join();
        }
    }
}

【问题讨论】:

  • 要传递一个方法,你需要java 8,它还没有在Android上可用。声明一个具有所需方法的类,并将该类的实例作为参数传递。然后调用那个方法。

标签: java android multithreading methods parameters


【解决方案1】:

我猜你应该考虑使用process 方法创建一个像ImageProcessing 这样的接口类。将方法创建为继承 ImageProcessing 的类。所以myFunc 将是ImageProcessing 类,您可以将其作为您需要的类传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多