在Java中用作参数

BorjaSanchidriánMonge

我在用Java做一个CronJob函数,看起来像这样:

public class CronJob {

    public static int mSeconds;
    public static String task; //?¿?¿

    public CronJob(int mSeconds, String task) {
        this.mSeconds = mSeconds;
        this.task = task;

        Timer timer = new Timer();

        timer.schedule(new TimerTask() {
            public void run() {
               //EJECUTE TASK
               //testFunction();
            }
        }, 0, mSeconds);
    }       
    ...
}

在我的主要功能中,我想执行以下操作:

new CronJob(3000, testFunction());

我不知道如何将函数名称传递给CronJob类以及应该使用哪种变量。

谢谢。

克里斯·克

Java有三种方法。

1)传递一个对象,该对象上具有提供所需功能的方法。

例如

new CronJob(3000, new Runnable() {
    public void run() {
      System.out.println("I ran");
    }
}); 

在Java 8之前,这几乎是唯一的选择。在Java 8之后,我们还有两种方法:

2)使用lambda,实际上它只是语法上的糖,用于仅使用一种方法来创建接口的实现。

new CronJob(3000, () -> System.out.println("I ran"));

一个人可以在这里阅读Lambdas

Lambda可以接受参数,也可以从其声明上下文访问字段和最终变量。它们不是完全闭包,因此变量必须有效地是final,这意味着它们不需要声明为final,因为Java 8编译器会为我们解决这个问题。

例如:

public void scheduleJob( String name ) {        
    new CronJob(3000, () -> System.out.println("Hello "+name));
}

如果正在使用其方法带有参数的接口,则它可能看起来像这样

public interface Job {
    public void doJob( String arg );
}

public void scheduleJob() {        
    new CronJob(3000, arg -> System.out.println("Hello "+arg));
}

3)通过引用传递现有方法,例如

私有无效theTaskMethod(){System.out.println(“ I ran”); }

新的CronJob(3000,()-> this :: theTaskMethod);

如果要在其方法带有参数的接口上使用此方法,则方法引用必须指向也带有相同类型参数的方法。例如

如果正在使用其方法带有参数的接口,则它可能看起来像这样

public interface Job {
    public void doJob( String arg );
}

public void scheduleJob() {        
    new CronJob(3000, System.out::println);   // would print out what ever arg was past to doJob(arg)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Java命令将Java文件用作参数

在Java中将通用接口用作方法参数

我如何传递结构以在go lang中用作参数

最好删除标头中用作函数参数的“原始”类型前面的“ const”吗?

在模板haskell引用中用作参数的函数

为什么枚举不能在此向量构造函数中用作参数?

在Erlang中用作参数

在Javascript中用作对象

寄存器如何在汇编中用作参数?

在另一个函数中用作参数-Dart

具有泛型的函数在其他函数中用作参数

复合变量可以在ksh中用作函数参数吗?

删除连接中用作“ by”参数的列

在actix-web中用作查询参数时,如何将无效的枚举变量变为无

类的数据属性应如何在类的方法中用作默认参数?

对在循环中用作“ const&”函数参数的临时对象的编译器优化?

在另一个通用类中用作类型参数时,无法推断通用类型

在Scala中将Java Enum用作Type参数

Sass:在RGBA中用作颜色

获取我在函数中用作参数的枚举的值

如何获取最后修改的文件,以便可以在其他命令中用作参数?

如何将json数组解析为字符串,以便稍后在jmeter中用作参数?

在函数中用作参数时,在结构值类型前面需要关键字var

类型“ short”必须是引用类型,才能在通用类型中用作参数“ TTargetEntity”

如何恢复在子例程中用作参数的元素名称?

Shell,回显文件并在另一个程序中用作参数

在 C++ 中用作参数时查找数组元素的数量

在返回语句中用作函数调用的 Python 函数参数?

是否有方法的註釋,可以在 Java Spring 中用作觸發器?