一个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看不懂
除了java,啥也不会啊,又没法去搞底层语言,只能在上层混着。
感觉问题都挺简单的,我去找Java的时候怎么都是八股文呢
各位五一玩得开心吗 苦逼的我今日开始上班了
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;
完全不够看
感觉很严谨且合理,可能考虑到用户乱填把最大和最小填反了