【发布时间】:2013-11-13 06:25:35
【问题描述】:
我有下面的接口及其实现类。
Demo.java
public interface Demo{
void showDemo();
}
DemoImpl.java
@Service
public class DemoImpl implements Demo{
public void showDemo(){
//To Do
}
}
现在我有一个带有静态方法的类,它将在内部调用showDemo(),如下所示。
DemoStatic.java
@Component
public class DemoStatic{
@Autowired
private Demo demo;
public static void callShowDemo(){
demo.showDemo(); //calling non static method from static method
}
}
这里我从静态方法调用非静态方法。我的设计正确吗?还是我需要改变我的设计?请给我建议。
谢谢!
【问题讨论】:
-
不能从静态方法调用非静态方法。它不会编译。
-
嗯,你可以,但你必须指定哪个对象调用非静态方法on。
-
这种情况下,方法调用其实是可以的;问题是对非静态变量
demo的引用。DemoStatic可以有多个实例,每个实例都有自己的demo变量。 -
你可以注入 bean 并在你需要的地方调用
showDemo(),不需要静态
标签: java spring jakarta-ee