SpringCloud(2024)
本文介绍如何在Spring项目中实现自定义注解,结合AOP与过滤器用于日志、权限控制等场景。通过@Target、@Retention等元注解定义注解,利用AOP拦截方法执行,或通过过滤器实现登录验证,提升代码可读性与复用性。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List,导致反射可绕过泛型限制。类型检查发生在编译期,针对引用而非对象本身。擦除后通过桥接方法解决多态冲突,并自动插入类型转换。但泛型不支持基本类型、静态成员不能使用类级泛型参数,且instanceof无法用于泛型类型判断。
Java基础
重载是方法名相同但参数列表不同,编译时由编译器根据参数决定调用哪个方法;重写是父子类中方法名和参数列表都相同,运行时由虚拟机根据对象实际类型确定调用哪个方法,可用@Override检查。
自定义注解
本文介绍如何通过自定义注解结合Spring AOP实现日志、权限控制等功能,涵盖注解定义(@Target、@Retention)、AOP拦截及过滤器应用,如登录验证,提升代码可读性与复用性。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,仅保留原始类型(如Object或限定类型),导致运行时无法获取泛型信息。这引发诸多问题:反射可绕过类型限制、静态成员不能使用类的泛型参数、instanceof检查泛型类型不合法、基本类型不可作为泛型参数等。同时,编译器通过桥接方法解决多态冲突,并在取值时自动插入强制类型转换,确保类型安全。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,仅保留原始类型。例如List<String>和List<Integer>在运行时都变为List,泛型信息不复存在。类型检查在编译期完成,反射可绕过限制。泛型方法通过桥接实现多态,静态成员不能使用类的泛型参数,基本类型不可作为泛型参数,instanceof无法用于泛型类型判断。
Java泛型类型擦除以及类型擦除带来的问题 1.什么是泛型擦除
Java泛型是伪泛型,编译后泛型信息被擦除,仅保留原始类型。如List<String>和List<Integer>在JVM中均为List。类型检查在编译期完成,针对引用而非对象;反射可绕过限制。泛型不支持基本类型,静态上下文中不能使用类的泛型参数。多态冲突通过桥方法解决,instanceof和泛型结合无效。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,即泛型信息被移除,替换为原始类型(如Object或限定类型)。擦除后,List<String>和List<Integer>均变为List,导致反射可绕过类型限制。类型检查发生在编译期,针对引用而非对象本身。获取泛型值时自动强转,避免手动转换。但擦除也引发多态冲突、静态成员限制、instanceof失效等问题,需通过桥方法等机制解决。基本类型不可作为泛型参数,静态上下文中的泛型使用也受约束。
FastJson:大面积故障规避案例
本文分享了一次因Kotlin语法误用导致FastJson反序列化全局崩溃的排查经历。混编工程中,一个`{}`被误赋值为Java对象字段,触发FastJson解析异常,静态标记位`kotlin_error`被置为true且无法恢复,导致后续所有Kotlin类反序列化失败,影响全链路。问题隐蔽、影响巨大,最终通过日志和源码深入分析定位。反思多语言混编风险、框架局限性及灰度发布的重要性。