[英]calling non static method from static class in java with spring autowiring?
我有以下接口及其实现类。
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
}
}
这里我从静态方法调用非静态方法。 我的设计是否正确? 或者我需要改变我的设计? 请建议我。
谢谢!
你可以这样做
@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
}
}
没有你的设计不正确。
private Demo demo;
必须
private static Demo demo;
你不能在静态方法中使用NON静态成员
上面的代码根本不会编译。 您正在尝试从静态方法引用非静态引用,这在Java中是不允许的。
请参阅此stackoverflow链接以获得更好的理解。
进行以下更改:
public static Demo demo;
当你调用DemoStatic.callShowDemo()时,演示可能不是instand
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.