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模式
所以静态方法也不能访问类型信息

 

 

 

 

参考资料:泛型及泛型擦除带来的问题

posted @ 2018-04-12 16:14  懂得了才能做一些改变  阅读(217)  评论(0编辑  收藏  举报