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

2021-03-11 17:56:56 +08:00
 erisfloralia

@Service public class xxxImpl implements xxxService {

@Override
public xxx xxxx() {
}

public static xxxx() {
}

} 大概是这样子的情况

2132 次点击
所在节点    Java
16 条回复
RedBeanIce
2021-03-11 18:05:22 +08:00
菜鸟一枚

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

一般建议通过引入接口的 service 调用重写的的方法??
GeruzoniAnsasu
2021-03-11 18:09:15 +08:00
能有啥问题?? 光 static 咋看得出来

static 又不可能是接口方法

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

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

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

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

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

© 2021 V2EX