Java interface static method workaround?

后端 未结 4 1406
我寻月下人不归
我寻月下人不归 2021-01-20 17:09

We have a given REST interface:

POST /calculation
abc

This calculation can be implemented by different logical \"c

相关标签:
4条回答
  • 2021-01-20 17:56

    It seems to me that you want an interface with the methods declared as normal, and an implementing class, and then simply instantiate a single instance of this. There's no reason per se for the methods themselves to be static.

    0 讨论(0)
  • 2021-01-20 18:03

    If none of classes implementing this interface does not need to change the implementation, use static method in interface as helper method.

    You won't need any workaround with java 8 version.

    Java 8 supports static methods in interface. Have a look at this documentation page.

    Static Methods:

    In addition to default methods, you can define static methods in interfaces. (A static method is a method that is associated with the class in which it is defined rather than with any object. Every instance of the class shares its static methods.)

    This makes it easier for you to organize helper methods in your libraries; you can keep static methods specific to an interface in the same interface rather than in a separate class

    Other solution to your problem is using Singleton as suggested in accepted answer.

    0 讨论(0)
  • 2021-01-20 18:05

    Why do you think the methods should be static? They surely could be, but that would limit you in terms of plugging in a different implementation later. If you are concerned about memory consumption or the like, using a Singleton would do the same as static for you, as you already said in the last paragraph of your question.

    0 讨论(0)
  • 2021-01-20 18:12

    Stateless doesn't mean static. Stateless means that the component doesn't rely on state. I say component, because the whole implementation of your interface is actually stateless - it will not have any member variables. So multiple instances of the implementation classes are perfectly OK. Especially if you have a context to manage them - Spring or EJB for example.

    0 讨论(0)
提交回复
热议问题