gpt4 book ai didi

java - 我可以使用方法而不是 Quartz 类来定义作业实例吗?

转载 作者:行者123 更新时间:2023-12-02 09:58:31 26 4
gpt4 key购买 nike

我正在阅读 quartz documentation并尝试了解我是否可以在 Job 实例方法而不是类中传递。

例如,如果有类,我需要写:

public class MyJobClass implements Job {

public MyJobClass() {
// Instances of Job must have a public no-argument constructor.
}

public void execute(JobExecutionContext context)
throws JobExecutionException {

JobDataMap data = context.getMergedJobDataMap();
System.out.println("someProp = " + data.getString("someProp"));
}
}

并定义一个作业实例,例如:

JobDetail job1 = newJob(MyJobClass.class) // what about method here
.withIdentity("job1", "group1")
.usingJobData("someProp", "someValue")
.build();

按照同样的原则,我尝试定义作业实例传递方法,例如:

// define the job
JobDetail job = newJob(testMethod())
.withIdentity("job1", "group1")
.build();

方法如下:

private Class<? extends Job> testMethod() {
//...
return null;
}

但我收到错误:

java.lang.IllegalArgumentException: Job class cannot be null.

更新:我在方法中返回 null ,因为如果我不这样做,我会得到: enter image description here

最佳答案

您的testMethod()方法返回null。 Quartz 不接受 null 并失败。

Quartz 想要自己管理作业,所以这就是为什么你只允许传递 class 而不是 instance

为什么需要提供自己的实例?如果您想让其“持久”以在执行之间保持状态,那么 Quartz 提供了有状态作业概念,请参阅 http://www.quartz-scheduler.org/api/2.3.0/org/quartz/StatefulJob.html

关于java - 我可以使用方法而不是 Quartz 类来定义作业实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55799057/

26 4 0
文章推荐: java - 启动新 Activity 后,前一个 Activity 是否有可能继续通过 Intent 向新 Activity 发送数据?
文章推荐: java - 嵌套 json 到 java 对象 List 返回预期值,但 List 返回 null 值