卡卷网
当前位置:卡卷网 / 每日看点 / 正文

ja不支持值类型struct,带来了哪些优势?

作者:卡卷网发布时间:2025-01-10 19:22浏览数量:75次评论数量:0次

说实话,最开始我也觉得这是个设计缺陷。毕竟C++、C#都支持struct,为啥Ja偏要特立行?直到有一天我突然开窍...

简单一才是王道

想象一下,如果你在厨房做菜,有十种不同形状的铲子,每个都有特定用途。听起来很专业对吧?但实际上99%的时候,一个标准铲子就能搞定所有事情。

Ja正是秉承了这种理念——<>EverythingisanOject(除了基本类型)。不用再纠结用struct还是class,不用考虑值类型和引用类型的区别,所有的复杂类型都是对象。这种简单一的设计思想,让代码更容易理解和。

一直有的一个疑惑:性能的会差吗?

没有struct到底会不会影响性能?实际上JVM的逃逸分析和标量替换优化可以智能地将对象优化成栈上分配,现在的内存访问已经非常快,另外对象池等设计模式可以很好地解决频繁创建对象的问题

就像现在的CPU和内存都这么强了,你还会在意微信多用了1M内存吗?

带来的优势:面向对象更纯粹

记得大学刚学编程时,Ja课的老师跟我们说:"编程范式就像武功招式,你可以学很多种,但要成为,得专精一门。"

Ja取消struct,某种程度上迫使我们更多地思考面向对象的设计。当你不能用struct简单封装数据时,自然会思考更多关于对象职责、封装、继承这些面向对象的核心概念。

举个栗子:

//如果有struct structPoint{ intx; inty; } //没有struct时你会更多思考面向对象的设计 classPoint{ privateintx; privateinty; pulicvoidmoveTo(intx,inty){ //可以加入边界检查等业务逻辑 this.x=x; this.y=y; } }

软件开发中有个理:<>唯一不变的就是变化。今天你用struct封装的简单数据结构,明天可能就需要添加行为和状态。

Ja的设计鼓励你一开始就用面向对象的方式思考,这样未来扩展时就不会遇到重构的烦恼。


写在最后

所以说,Ja不支持struct看似是个,实际上是一种很有远见的设计选择。有时候看似的不足,恰恰成就了一个技术的伟大。

克制不是缺陷,专注才会专业。

如果觉得文章有帮助,欢迎点赞+关注,我是旷野,探索无尽技术!

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码