对 Java 泛型的顶级理解

335 天前
 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 也能够进行处理啊。 他这个是不是过度设计了?

6333 次点击
所在节点    程序员
66 条回复
auh
335 天前
顶级的理解,只在他的脑子里面。这防离职代码写的好
oaix
335 天前
只要我看不懂的代码:过度设计,只要看不懂我写的代码:辣鸡🐶
iamzuoxinyu
335 天前
一股子 Rust 味儿
iOCZ
335 天前
写代码要考虑读代码的人的心智负担
NextWorld
335 天前
把 Java 泛型用成了 c++模板的样子了
mannixSuo
335 天前
@beneo 怎么一股子 chatGpt 的味道
mannixSuo
335 天前
@agagega C++如此离谱吗?但是把我感觉写代码是给人看的,要人能看得懂才行
Slurp
335 天前
闹麻了,扯 C++ Rust 都是看不懂的归于一类是吧?
wolfie
335 天前
纯傻吊设计

不看需求,过度设计,限制一堆,
未来需求变更 扩展麻烦。
可读性差 别人没法接手不说,未来自己都有可能看不懂。
xingda920813
335 天前
@wanguorui123 This is incorrect. 是擦除到第一个原始上界, <T extends Comparable<Number> & Serializable> 会被擦除为 Comparable (raw type), 而不是 Object.
TWorldIsNButThis
335 天前
名字缩写问题比较大

其他没什么看不懂的 问题是要不要这么做

java 泛型复杂不了,又不是 ts 能写逻辑
xgfan
335 天前
Java 业界最大的问题就是这种傻逼的抽象太多了。
wanguorui123
335 天前
@xingda920813
Java 泛型的实现是靠类型擦除技术实现的,类型擦除是在编译期完成的,也就是在编译期,编译器会将泛型的类型参数都擦除成它指定的原始限定类型,如果没有指定的原始限定类型则擦除为 object 类型,之后在获取的时候再强制类型转换为对应的类型,因此生成的 Java 字节码中是不包含泛型中的类型信息的,即运行期间并没有泛型的任何信息。
devilweime
335 天前
功能没啥增加的话,为什么不写个转换,转成一种参数一个 service 处理
Anarchy
335 天前
就不能多拆几个么,非得挤在一个类里么。这个不是过度设计而是懒得设计。
otakustay
335 天前
这在 TS 里不就是常规代码么 233
zhuzhibin
335 天前
傻逼写法 看不懂
someonedeng
335 天前
牛逼 什么东西
tqyq88
335 天前
OP 是不是在政企金融之类的地方工作
PTLin
335 天前
https://s2.loli.net/2023/06/10/AeXgW2TZIt98E75.png 小小的 rs 震撼,不过这种用法不常见。

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

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

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

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

© 2021 V2EX