在相识Fastjson编解码Integer数字时,曹小三同学让DeepSeek“深度思考”生成了一些testcase。下面是DeepSeek提供的JUnit5测试代码。- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONException;
- import org.junit.jupiter.api.Test;
- import static org.junit.Assert.*;
- public class IntegerCodecTest {
- @Test
- void testNullValue() {
- String json = "{"num": null}";
- Model model = JSON.parseObject(json, Model.class);
- assertNull(model.num);
- }
- @Test
- void testInvalidFormat() {
- String json = "{"num": "abc"}";
- assertThrows(JSONException.class, () ->
- JSON.parseObject(json, Model.class)
- );
- }
- static class Model {
- private Integer num;
- // getter/setter
- }
- }
复制代码 其中,小三在运行testInvalidFormat时,发现assertThrows不见效————junit断言JSON.parseObject(json, Model.class)会抛出JSONException,实际却没有抛出。
小三就反馈给DeepSeek。
DeepSeek开启了“一本正经地颠三倒四”模式。
 小三把这个环境讲给同事赵小四,小四自信地解释道“这是Fastjson在兼容性方面做得好。”
小三、小四的师傅工匠李得知后,一眼发现了问题。原来,上面JUnit代码中,DeepSeek省略了Model类的 getter/setter,加上就好使了。并通过运行testInvalidFormat给两个小伙演示所抛出的异常stacktrace。
点击查看代码- com.alibaba.fastjson.JSONException: parseInt error, field : num
- at com.alibaba.fastjson.serializer.IntegerCodec.deserialze(IntegerCodec.java:101)
- ...
- at com.alibaba.fastjson.JSON.parseObject(JSON.java:588)
- at com.emax.IntegerCodecTest.testInvalidFormat(IntegerCodecTest.java:36)
- ...
- at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
- Caused by: java.lang.NumberFormatException: For input string: "abc"
- at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
- at java.lang.Integer.parseInt(Integer.java:580)
- at java.lang.Integer.parseInt(Integer.java:615)
- at com.alibaba.fastjson.util.TypeUtils.castToInt(TypeUtils.java:995)
- at com.alibaba.fastjson.serializer.IntegerCodec.deserialze(IntegerCodec.java:93)
复制代码
小三、小四这才明白这个技能点:
Fastjson对于非Integer数字,是无法反序列化为Integer或int数字的,会抛出异常。
【结语】现在,AI 代码生成工具如 Copilot、Cursor 等,能基于简单提示快速输出代码片段,甚至完成复杂功能模块,其 “思考” 速度与覆盖范围令人惊叹。但不少程序员却因此过度依赖,遇到问题便直接让 AI 生成代码,不再主动分析需求、构思算法逻辑,也不深入理解代码背后的原理与设计模式。
比如开辟数据库连接模块时,不思考怎样优化连接池配置,直接利用 AI 生成的默认代码;设计复杂业务流程,不进行架构规划,盲目套用 AI 提供的办理方案。这不仅导致代码质量乱七八糟,也让程序员逐渐丧失独立编码与办理问题的能力。AI 虽强大,但它的 “思考” 是基于数据练习,无法替代程序员对业务的理解、对技能的创新探索。
当人放弃思考,就如同失去魂魄的躯壳,难以形成独特见解,创造力也会被逐渐磨灭。长此以往,人类将在思维的 “温床” 中丧失进步的动力。唯有保持主动思考,将 AI 作为辅助工具,才能真正发挥其价值,成为良好的开辟者。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |