java - 在 Java 8 之前将方法作为参数传递

标签 java methods parameters program-entry-point

是否可以传递方法和参数?例如,像这些;

public int subMethodA(int value1, int value2, int value3){
    int A = value1;
    int B = value2;
    int C = value3;
    return A|B|C;
}

public int subMethodB(int value1, int value2, int value3){
    int A = value1;
    int B = value2;
    int C = value3;
    return A|B|C;
}

然后我有另一个方法,我想在这个方法中传递一个参数;

public void MainMethod(Method mymethod, int value1, int value2, int value3){
    mymethod(value1, value2, value3);
}

所以稍后,我可以使用类似的方式调用它;

mainMethod(subMethodA, 1,2,3);
mainMethod(subMethodB, 100,2,1520);

这可能吗?

最佳答案

由于您不能使用 Java 8,因此您可以这样做。

创建一个名为 Method 的接口(interface):

public interface Method {
    public boolean call(int value1,int value2,int value3);
}

创建名为 SubMethodA 的方法的实现:

public class SubMethodA implements Method {

    @Override
    public boolean call(int value1, int value2, int value3) {
        int A = value1;
        int B = value2;
        int C = value3;
        return A|B|C;//This does not compile
    }

}

创建包含 mainMethod 的 Main 类:

public class Main {
    public static void mainMethod(Method method,int value1,int value2,int value3) {
        method.call(value1, value2, value3);
    }
}

您现在可以按如下方式调用 mainMethod :

Main.mainMethod(new SubMethodA(),1,2,3);

如果您需要将一些其他方法传递给 mainMethod,您还可以使用匿名内部类来消除为每个要传递的方法创建一个 .java 文件的需要:

       Main.mainMethod(new Method() {
            public boolean call(int value1, int value2, int value3) {
                int A = value1;
                int B = value2;
                int C = value3;
                return A|B|C;//This does not compile
            }
        },1,2,3);

关于java - 在 Java 8 之前将方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28784076/

相关文章:

java - Spring Data Rest 2.0.0 - @RestResource (exported=false) 不适用于属性

java - 通过使用 schema 和表名使用 jooq 生成 DDL

Java - JMF 无法添加捕获或视频设备

Java向servlet传递不可见参数

c++ - Variadic 模板参数总是必须放在最后吗?

java - Spring - 需要使用注解进行依赖注入(inject)

c# - 获取最后调用的方法的名称

java - 难以理解构造函数以及在另一个类中调用它们的原因

java - 如何在Java中的另一个类中使用一个类中的变量

jpa - java.lang.IllegalArgumentException : You have attempted to set a parameter value using a name of string that does not exist in the query string 异常