对 Java 泛型的顶级理解

359 天前
 mannixSuo
public abstract class ServiceA<SEAL extends SealServerServiceAbst<F, FPR, FSUP, FGD, FFE, FSTP, FMBF>,
        F extends ApplyCommon<FPR, FSUP, FGD, FFE, FSTP, FMBF>,
        FPR extends ApplyPartnerCommon<FMBF>, 
        FSUP extends SubPlanCommon, FGD extends CmContGoodCommon,
        FFE extends  FileCommon,
        FSTP extends  StampCommon, 
        FMBF extends  FileCommon,
        V extends  ApplyCommon<VPR, VSUP, VGD, VFE, VSTP, VMBF>,
        VPR extends  ApplyPartnerCommon<VMBF>, 
        VSUP extends  SubPlanCommon, VGD extends  GoodCommon,
        VFE extends  FileCommon,
        VSTP extends  StampCommon, VMBF extends  FileCommon>
        extends ServiceB< Apply,  ApplyMapper>
        implements TopService<V, VPR, VSUP, VGD, VFE, VSTP, VMBF> {
        // 一些业务逻辑
        }

前几天看到其他人写的一段代码,一眼给我看蒙了。 问了他才知道,因为和前端对接使用了 DTO ,FORM 两种参数类型,然后又和其他模块对接,又使用了一种参数类型。 他呢就把这几个参数抽象成泛型,在定义一个的抽象 service 如上,每种 service 处理不同类型的参数。 按我的理解,不管是前端交互还是给其他服务调用,就算参数不一样,一个 service 也能够进行处理啊。 他这个是不是过度设计了?

6377 次点击
所在节点    程序员
66 条回复
nkidgm
358 天前
过度设计,这一定程度上耦合过多的泛型类型,应该分层设计啊。
Akitora
358 天前
还以为是 rust
zhiyu1998
358 天前
这比 aqs 还难理解
DinnyXu
358 天前
高级耦合代码,简称屎山......
zgqq
358 天前
为了 xx ,而 xx
token10086
358 天前
楼上的有一个算一个,全在第一层。写这个代码的老哥在大气层。
这种人还怕老板裁员吗 ?? 手动狗头!
xuanbg
358 天前
这个如果不知道该使用什么类型的话,代码都根本写不下去啊。这个都不能算是过度设计,而是魔怔了呀。
nullyouraise
358 天前
我之前在 C++里一个模板类带 concept 也写了 30 行的约束……
AyaseEri
358 天前
这。。。不亚于前端写库那群人做的类型体操。
liuguangcuican
358 天前
这代码牛逼的,你们还想着怎么优化代码,怎么写优雅,老板可能背后想着怎么优化你了,这个老哥直接让老板断了这个念想
GeruzoniAnsasu
358 天前
拍平了无非就是 class C <constraint1,constraint2,constraint3,...> 而已

但放 java 里真的挺蠢的,c++里玩类型体操是因为类型是可被计算的,java 这么搞怕不是邯郸学步把自己忽悠瘸了
shalk
358 天前
一般类里面,最多泛两三个类型,这么多泛的类型,完全可以拆开来分别设计。

泛了这么多,全是约束,编译约束可能导致,各种问题,又回来放宽约束
besscroft
358 天前
Java 泛型之父,6
yuekcc
358 天前
在 typescript 面前这些都是小 case
janus77
358 天前
java 是这样的.jpg
libinglong9
358 天前
@beneo 你的回答很 gpt
fkdtz
358 天前
可以但没必要,都 DTO 层面了应该很靠近业务侧了, 业务之间定制化比较高,强行捏合有点过了。不过如果业务之间真的很接近到也无妨吧,反正能保证写一次半年不会改就还行。
GuardX
358 天前
函数里这么多 Common ,真的很 common 吗?
Dragonphy
358 天前
需要了解下 Clean Code 的基本概念,代码不可读写得再牛逼那也是拉屎
realpg
358 天前
@vitovan #2
团队环境写这种代码就离被优化不远了

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

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

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

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

© 2021 V2EX