非静态字段不能从静态上下文Main方法中引用
问题描述:
我有两个班在我Spring-Boot
应用:非静态字段不能从静态上下文Main方法中引用
-Tasks
-Runner
亚军类包含我main
方法在哪里试图从我的任务类调用一个方法:
亚军:
个@Component
public class Runner {
Tasks tasks;
@Autowired
public void setTasks(Tasks tasks){
this.tasks=tasks;
}
public static void main(String[] args){
//error being caused by below line
tasks.createTaskList();
}
任务等级:
@Service
public class Tasks {
public void createTaskList() {
//my code
}
//other methods
}
在我的亚军,当我尝试调用任务类,我得到了以下错误createTaskList()方法:
Non static field 'tasks' cannot be referenced from a static context
如何我解决这个问题?
答
主要方法是static
这意味着它属于类而不是某个对象。因此,静态上下文无法引用实例变量,因为它不知道它将使用哪个实例(如果甚至有的话)。
总之,解决办法是让Tasks
对象static
在Runner
类中。
@ElliotFrisch,那篇文章没有完全回答OP的问题。由于它是一个弹簧引导应用程序,因此OP不能仅仅因为涉及注入的bean而创建一个静态实例。 –
谢谢@HankD,你还有什么建议? – java123999
@ElliotFrisch,我会引用他们到Krzysztof Wolny的回答http://stackoverflow.com/questions/28199999/how-does-a-spring-boot-console-based-application-work。它向他们展示了如何创建一个'main()'类似可以访问注入bean的非静态'run()'方法。 –