无内鬼,来点Java实习生笑话

一个demo,我没硬性要求Ta 必须用轮子(例:validation-api ),实际业务中 参数校验确实会要求必须用validation-api

实习生错就错在想太多

产品没说,就不要加戏

1 个赞

???

1 个赞

这种反序列化泛型对象的都存在这种问题,解决方法也都差不多,如下:
List<Business> businessList=JSON.parseObject(jsonString,new TypeReference<>() { });

 List<Business> businessList=JSON.parseObject(jsonString,List.class); 

为什么这可以直接编译通过呢? rawType为什么可以直接转换成泛型类型

应该

List<Business> businessList = JSON.parseArray(jsonString, Business.class);
1 个赞

问了ai明白了

这是因为Java的泛型系统设计中的一种特性,称为类型擦除。在编译时,Java会检查泛型代码的正确性,但在运行时,泛型类型信息会被擦除,也就是说,运行时的Java代码并不知道泛型的具体类型。

在你的例子中,`List`可以赋值给`List<Business>`,因为在运行时,`List<Business>`实际上就是`List`,泛型类型`Business`已经被擦除了。这就是为什么你可以将一个没有泛型信息的`List`赋值给一个有泛型信息的`List<Business>`变量。

但是,这样做可能会在运行时引发`ClassCastException`。因为`List`中的元素类型是`Object`,而`List<Business>`中的元素类型是`Business`。当你试图访问列表中的元素并将其作为`Business`对象处理时,如果元素实际上不是`Business`类型,就会抛出`ClassCastException`。

为了避免这种情况,你应该在创建列表时就指定泛型类型,或者在使用列表元素时进行类型检查和类型转换。

运行时才处理,前面只是泛型而已

不会搜索才是最大的问题,真就是抄也不会抄,搜也搜不到,这不仅是实习生的问题,我觉得甚至是70%的javer的问题,混子多如牛毛,crud都干不利索。代码是代码,他是他,突出一个不用脑子写代码

1 个赞

笑死了

老哥好骂

这是我多年工作总结的心得,我还有一个心得是,10K以下的选手都干不了啥东西,哈哈哈哈

都这样了,还干个屁的java 。真不是歧视,我是真烦跨行来的。那工资要的一个低,主打能进就行。好的科班生没饭吃,职业的找工作工资都要不上去。就跟那蝗虫一样,明年要说Ai 赚钱,全得去。留下烂摊子,唉……

不会Java看不懂 :dotted_line_face:

除了java,啥也不会啊,又没法去搞底层语言,只能在上层混着。

感觉问题都挺简单的,我去找Java的时候怎么都是八股文呢 :rofl:

各位五一玩得开心吗 苦逼的我今日开始上班了

2023-10-17

code review发现实习生从threadlocal租户id是用Integer 赋值
我:这个租户id在数据库(当时用的是mysql)的类型是啥
实习生:bigint 12
我:Integer 不行 得用Long
实习生不语,默默地修改了代码

实习生修改完毕的代码如下↓

Object tenantId= ... // 忽略租户ID的取值过程
Long id= ((Integer) Integer.value0f(tenantId.toString()).longValue;

完全不够看

感觉很严谨且合理,可能考虑到用户乱填把最大和最小填反了