繁体   English   中英

使用spring自动装配从java中的静态类调用非静态方法?

[英]calling non static method from static class in java with spring autowiring?

我有以下接口及其实现类。

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

       }

}

这里我从静态方法调用非静态方法。 我的设计是否正确? 或者我需要改变我的设计? 请建议我。

谢谢!

你可以这样做

@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM