合上书。外头早就黑透了,连楼道声控灯都懒得亮。《Java编程技术全接触》这砖头,硬壳封面硌手,翻到中间那股子新教材油墨味直往鼻子里钻。说实话,刚放下它,我是真抵触。满屏的关键字、语法规则、类库,密不透风,跟堵墙似的。本指望是速成说明书,翻了两页,不对劲。它不教你怎么快速上手。它在交底。
卡得最久的,是异常处理。作者没拽专业词,就老老实实掰扯 try-catch。直白得很:程序跑着跑着,准得出岔子。关键看你怎么兜底。盯着示例代码琢磨半天,脑子里突然蹦出前年赶上线那档子烂事。空指针异常。工位上硬熬到凌晨两点,咖啡凉透了都没空喝。那时候真觉得,报错就是系统在甩脸子,纯属自己脑子没转过来。结果书里一句“异常不是错误,而是程序运行中必然出现的分支”,把我拽回现实。这话未必全对。但在代码世界里,确实如此。谁盼着代码一路绿灯啊?生活里那些打乱节奏的突发状况,没提前声明的变量,早就埋在底层逻辑里了。学会 catch,压根不是为了糊窟窿装没事。是系统一抖动的时候,咱能稳稳接住自己,不至于跟着崩盘。
翻到面向对象和多态,我反倒走神了。父类、子类、接口怎么继承、怎么重写,作者扒拉得条理清晰。清晰得让人打哈欠。脑子里晃过的,却是自己在不同场合倒腾身份那点破事。会议室里,得是个体无完肤、逻辑严密的项目负责人,PPT滴水不漏。推开家门,立马切换。耐着性子听孩子扯学校鸡毛蒜皮,还得憋住上班受的鸟气。书里写:“接口只是声明,真正的实现得靠具体的类去完成。”我盯着愣了一会儿。咱们平时不也总端着“接口”跟人打交道吗?客气,专业,情绪稳定。全是对外暴露的方法签名。可撑着这些签名的,是背后没人瞧见的“具体实现”。硬咽下去的疲惫,半夜自己嚼碎的焦虑,方案推翻重来多少次才凑合能跑的日常。多态好玩就好玩在,同一个调用扔过去,不同对象能跑出不一样的戏码。人毕竟不是机器。真没必要逼自己永远摆同一副姿态。偶尔露点怯,撒个娇,反倒更真实。
后半段切到多线程和网络通信。线程调度、同步锁、数据流。作者笔头一沉。我本以为得困得磕脑袋,没想到瞅见“上下文切换”,差点没乐出来。书里写得明白:线程频繁切换,系统资源哗哗掉,效率直接拉胯。我算了算,平时一天光在微信、邮件、文档、会议软件之间切来切去,少说上百次。这哪是写技术。分明是在扒现代打工人的底裤。早上回邮件,中午开会扯皮,下午赶方案,晚上抽空啃新东西。大脑就像台被强行塞了十几个线程的老服务器。前台看着还在跑任务,后台早就卡得风扇狂转。作者没整虚头巴脑的安慰,就干巴巴列着线程池和锁的机制。但我咂摸出味儿了。他琢磨的恐怕不是技术,是“收着点”。与其让几十个线程在那儿空转抢资源,不如老老实实排队,挨个儿办。日子真能顺成单线程去理吗?未必。生活哪有那么多选择权。但咱们至少可以学着,把那些抢资源的后台进程先关了。喘口气,再干活。
说句实在话,这书的编排确实板正。板正得有点刻板。按知识点硬切,像一堆标准化的乐高积木。少了点瞎琢磨的乐子。有些章节的示例代码,写得跟真空环境似的。现实中哪能碰上那么干净的输入?边界条件、脏数据全给你过滤得干干净净。看着清爽,真上手了反而容易翻车。不过我也不打算挑刺。它本来就不是拿来当小说看的。它就是一把直尺。量出我当初学东西时那股子急躁。也量出后来慢慢踩实步子的那份耐心。有些技术书,天生就这德行。不跟你绕弯子。也不给你留幻想。
现在,我早懒得碰那本硬壳书了。它安安静静搁在书架犄角旮旯,跟几本吃灰的闲书挤在一块儿。偶尔打那儿过,眼风扫过书脊,还会想起那些对着屏幕死磕调试的晚上。代码终于跑通。终端里跳出 BUILD SUCCESS。那股子踏实劲儿,跟做熟一顿晚饭、顺手修好个坏台灯,真没两样。都是把乱糟糟的线头理顺。把断掉的茬儿接上。看着它重新转悠起来。屏幕上的光标还在闪。一下。又一下。不急不缓。像在等一个不会报错的答案。我也就随它闪吧。反正日子还得接着敲。错就错呗。大不了,再 catch 一次。