编译器

首页 标签 编译器
# 编译器 #
关注
30624内容
FastJson:大面积故障规避案例
本文记录了一次由Kotlin与Java混编工程中误用`{}`赋值引发的FastJson反序列化崩溃问题。因将空对象误写为lambda表达式,导致FastJson内部静态标记位`kotlin_error`被置为true且无法恢复,进而使整个应用反序列化链路瘫痪。问题隐蔽性强,排查耗时两天,最终通过源码分析定位。文章反思了多语言混编下的语法混淆风险、框架信任边界及灰度发布的重要性,强调Bug是成长的阶梯。
|
3月前
| |
来自: 计算巢
重载与重写的区别
重载是方法名相同但参数列表不同,由编译器在编译时确定;重写是父子类中方法名和参数列表均相同,由运行时解释器根据对象实际类型决定调用哪个方法,可用@Override检查。
自定义注解
本文介绍如何在Spring框架中实现自定义注解,结合AOP与过滤器应用于日志记录、权限控制等场景,通过代码示例展示注解定义、元注解使用及拦截处理流程,涵盖从基础到进阶的完整实现步骤。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,仅保留原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均变为List,导致类型信息丢失。擦除后通过反射可绕过泛型限制,但编译器会在调用处自动插入类型检查与强制转换以保证安全。此外,泛型不支持基本类型、静态成员不能使用类级别泛型参数,且instanceof无法用于泛型类型判断。为解决多态冲突,编译器生成桥方法实现重写语义。
|
3月前
| |
来自: 云原生
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,泛型信息被移除,仅保留原始类型(如Object或限定类型)。这导致List<String>和List<Integer>在运行时等价于List,引发反射可插入不兼容类型等问题。同时,静态成员不能使用类的泛型参数,多态与泛型擦除存在冲突,需通过桥方法解决。泛型不支持基本数据类型,且无法在运行时进行带泛型的instanceof判断。
自定义注解
本文介绍Java自定义注解的实现原理与应用,结合Spring AOP和过滤器完成日志、权限控制及登录验证。通过@Target、@Retention等元注解定义注解,并在控制器中通过拦截器解析,实现如无需登录访问等功能,提升代码可读性与复用性。(239字)
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,即泛型信息被移除,替换为原始类型(如Object或限定类型)。这导致List<String>和List<Integer>在运行时均为List,引发类型安全、多态冲突等问题。编译器通过桥方法、自动类型转换等机制解决部分问题,但静态成员不能使用类的泛型参数,且基本类型需用包装类。
免费试用