同事 Service 层的方法有几个比较通用的写成静态?这会造成什么样的问题?

2021 年 3 月 11 日
 erisfloralia

@Service public class xxxImpl implements xxxService {

@Override
public xxx xxxx() {
}

public static xxxx() {
}

} 大概是这样子的情况

2839 次点击
所在节点    Java
16 条回复
RedBeanIce
2021 年 3 月 11 日
菜鸟一枚

表示没有感受到问题。最多就是对方法区占用了一点内存?

一般建议通过引入接口的 service 调用重写的的方法??
GeruzoniAnsasu
2021 年 3 月 11 日
能有啥问题?? 光 static 咋看得出来

static 又不可能是接口方法

你又不描述这些 static 是干啥的
static plus 1+1 这种方法能有啥问题嘛
zm8m93Q1e5otOC69
2021 年 3 月 12 日
static 中不能使用托管的 bean 啊,只能用 set 引入 bean 才行,可能对后来的维护有影响
erisfloralia
2021 年 3 月 12 日
@GeruzoniAnsasu 给其他方法调用的,比较通用的方法,所以他说用静态的方便给其他类调用
erisfloralia
2021 年 3 月 12 日
@beichenhpy 谢谢大佬解答
yazinnnn
2021 年 3 月 12 日
你被 oop 脑控了
javapythongo
2021 年 3 月 12 日
没啥大问题吧,可能就这一个方法,又不好写到其它工具类里面
javapythongo
2021 年 3 月 12 日
唯一的问题就是有点违反开闭原则了,调用者必须知道具体的接口实现类才行
gwybiaim
2021 年 3 月 12 日
@RedBeanIce #1 无论是不是静态,只要类加载了,就会占方法区的内存。
gwybiaim
2021 年 3 月 12 日
最大的缺点是失去了多态的特性,进而很多 spring 的特性用不了,比如 AOP 以及基于 AOP 的功能
zm8m93Q1e5otOC69
2021 年 3 月 12 日
@erisfloralia 比较通用的方法可以尝试写成基类继承
woshiaha
2021 年 3 月 12 日
这种可以写成 static 的公共方法一般是要抽到 Util 类里面去的把 放在 service 类里面给其他类调用感觉怪怪的
ychost
2021 年 3 月 12 日
Static 抽取到基类,或者 Util 里面去吧
erisfloralia
2021 年 3 月 12 日
@woshiaha
@ychost
我也感觉怪怪的,怎么好像总是有点不对劲
zydxn
2021 年 3 月 12 日
没必要抽到 Util 类的静态方法可以写在接口里,参考 Interface Stream
cluulzz
2021 年 3 月 12 日
要用没啥问题...比较通用的还是拉到 util 里吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760774

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX