首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java引语Annotation

2012-08-28 
java注解Annotationjava的注解其实很常见,如@Override标记重载,@SuppressWarnings(unused)用过Eclipse的

java注解Annotation
java的注解其实很常见,如@Override标记重载,@SuppressWarnings("unused")用过Eclipse的应该都知道。其实注解的本身并不做任何的操作,就像接口一样。注解的定义也特有意思[public @interface 注解名]是不是看起来很像接口。
现在的很多框架都用到了注解,如spring、jpa个人认为注解会让让程序看起来生涩难懂,但也正应为这样,也体现了编程中隐藏实现过程的这一思想。
虽然注解本身不做什么,但注解所配套的解析器会帮你完成一些事情,如属性的填充,其实原理很简单就用到了反射机制。下面是一个实现SqlMapClient实例填充到Dao层中的实例中的实现。

public static Map<String, Object> beanMap = new HashMap<String, Object>();public static void parse()throws Exception{String packageName = "com.sjw.lx.dao";String packagePath = packageName.replace(".", "/");String path = MyAnnotationParse.class.getClassLoader().getResource(packagePath).getPath();File f = new File(path);for(String s : f.list()){String className = packageName.concat("."+s.replace(".class", ""));Object obj = Class.forName(className).newInstance();Method[] methods = Class.forName(className).getMethods();for(Method m : methods){if(m.getAnnotation(FillSqlMap.class)!=null&&m.getName().startsWith("set")){m.invoke(obj, SqlMapSingle.getSqlMap());beanMap.put(className, obj);}}}}

这是一个自定义扫描包中的类,将打有自定义注解的类通过反射创建类的实例并填充SqlMapClient的属性,放入到Map结构中提供服务层的调用。

热点排行