java注解,反射和泛型学习
spring框架很多地方都应用了注解,如@controller,所以要学会自定义注解及注解处理器。
Class<?> cl=Class.froName(className) //通过类名加载类,获取类对象
DTable dtable=cl.getAnnotation("DTable.class")// 通过名称,获取类上的指定注解。
有时候一个注解就可以帮我们完成很多事,其背后是强大的动态代理,为我们写了大量的逻辑。虽然很方便,但是也为我们debug形成了障碍,比如@FeignClient。需要注意的是,我们建议使用jar包提供的注解,不建议开发者封装已有的注解,这样使其他人能更快地接手代码。
对于泛型,为什么数组不能使用
T[] t = new T[n];
在于java的泛型原理,java是的类型信息会在编译期擦除,也就是List<Integer>,List<String>,List<Double>在运行期类型是一样的
那么jvm又怎么知道类型呢?
是在编译器期在需要返回具体类型时,在方法中使用了强制类型转换,因为数组不是通过方法访问的,所以没有类型信息,这个如果允许这样创建,就会RunTimeError
java中的泛型是code sharing模式
所以静态方法也不能访问类型信息
参考资料:泛型及泛型擦除带来的问题
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义