也许有人说,不用注解,只用个共通工具类不就行了吗?但是注解让代码更优雅,而且当你增加其他一些需求,比如其他csv格式的时候,只需要加几个注解就能轻松的扩张你的功能。
那么看代码吧。
1. 定义注解定义一个csv格式的注解,包含文件的分隔符,编码等等信息。
如果业务需求增多,可以继续添加功能,比如换行符之类。
2. 使用注解这里为了扩展性先定义了一个空的接口。
如果需要扩展就实现该接口。
public interface CSVFormat { }FreeTextCSVFormat实现了CSVFormat接口,并使用了FileFormat的注解,分隔符,编码等都使用默认值,并没有进行特别的设置。
3. 处理注解,读取文件中的一行数据根据注解的设置,读取一行数据。
不管是什么编码,或者换行符,都是用通用的readDataLine()方法。
4. 功能扩展-读取数据,并封装到类中刚才只是读取一行,返回字符串数组。
但是我们有时候想把数据封装到类里,比如上述的FreeTextCSVFormat类。
那么可以再定义一个文件内容的注解。
FreeTextCSVFormat,添加FileColumn注解。
最后,可以使用反射获取columnIdex,并把读取的内容封装进去。
具体实现就不贴出来了。
结语使用注解能够提升扩展性,比如添加一种新的csv样式,并不需要修改读取文件的方法,只需要添加使用注解的类就可以了。
这样做能够更优雅,还能帮你了解java反射,毕竟平时用框架的注解很多,自己写的机会却很少。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)