我有以下界面及其实现类。
public interface Demo{
void showDemo();
}
@Service
public class DemoImpl implements Demo{
public void showDemo(){
//To Do
}
}
现在我有一个静态方法的类,它将在内部调用showDemo()
,如下所示。
@Component
public class DemoStatic{
@Autowired
private Demo demo;
public static void callShowDemo(){
demo.showDemo(); //calling non static method from static method
}
}
这里我从静态方法调用非静态方法。我的设计是否正确?或者我需要改变我的设计?请建议我。
谢谢!
答案 0 :(得分:4)
你可以这样做
@Component
public class DemoStatic {
private static Demo demo;
@Autowired
public void setDemo(Demo d) {
demo = d;
}
public static void callShowDemo(){
demo.showDemo(); //calling static method from static method
}
}
答案 1 :(得分:2)
没有你的设计不正确。
private Demo demo;
必须是
private static Demo demo;
你不能在静态方法中使用非静态成员
答案 2 :(得分:0)
以上代码根本不会编译。您正在尝试从静态方法引用非静态引用,这在Java中是不允许的。
请参阅此stackoverflow链接以便更好地理解。
进行以下更改:
public static Demo demo;
答案 3 :(得分:0)
当你调用DemoStatic.callShowDemo()时,演示可能不是instand