做图片网站咋样,网站开发实训课程的总结,双流海外网络推广,小企业网站建设新市场报价随着java版本的更新提供了越来越多的语法和工具来简化日常开发#xff0c;但是我们一般用的比较早的版本所以体验不到。这时就用到了guava这个包。guava提供了很多方便的工具方法#xff0c;solar框架就依赖了guava的16.0.1版本#xff0c;这里稍微介绍下。
一、集合工具类…随着java版本的更新提供了越来越多的语法和工具来简化日常开发但是我们一般用的比较早的版本所以体验不到。这时就用到了guava这个包。guava提供了很多方便的工具方法solar框架就依赖了guava的16.0.1版本这里稍微介绍下。
一、集合工具类
平常有时候会在初始化类时候创建一些含有数值的集属性或者在调用方法传参时候需要自己创建一个集然后添加需要的东西进去之后将集作为参数传给方法。就像下面这样:
这里不管是在构造方法里面设值还是创建一个list将需要的东西add进去之后再作为参数调用method都非常麻烦。如果用guava改成下面这样就可以了:
这里的ImmutableMap创建的是一个不可变的Map对他调用put方法会报错。如果需要可变Map可以用Maps。newHashMap()重新包装下就好了。 另外guava还包含很多关他集类型比如支持多个相同值的Multiset
另外还有支持单key多value的Multimap或者Table这样的支持行列查找的集类等等
二、缓存
guava提供了一些非常方便的Cache组件比如获取时如果为空则根据提供的实现创建或者获取一个Value返回的LoadingCache像下面这样可以创建一个在value没有其他强引用时直接能被回收的缓存
这里get时候如果cache里面为null则会通过提供的CacheLoader实现返回一个value。另外还有支持指定最多size或者最多weight的缓存当超过最多限制时候会自动去掉最早的键值对
以及定时的cache来支持指定读写操作之后多少时间清理掉这个键值对
三、ListenableFuture
有时候我们会建立一个ExecutorService去做一些事情但是在把任务提交后就只能干等却任务不知道什么时候完成如果想在任务完成后做一些回调之类的事情就会很麻烦。guava提供了ListenableFuture这么个东西比java自带的Future要好用很多。 另外还有支持设置返回结果或者异常的SettableFuture以及支持将抛出的异常转成自定义受检异常的CheckedFuture等。
四、事件总线
事件总线提供了对数据发布订阅的支持。
任何一个订阅了特定类型的方法被注册后都能接收到post出来的特定类型数据这样方便了模块之间解耦使用起来非常方便。并且可以做到像第三节讲的在线程完成一个任务后将数据post出去执行回调。存在的问题是订阅点多的话要找到这个事件对应的订阅处理方法比较困难。 另外guava还提供了AsyncEventBus支持异步的分发事件方式这样就不用等之前的事件处理完成再进行下一个分发了。
五、其他
guava还提供了很多方便使用的工具类比如支持文件遍历获取文件的文件名或者后缀获取文件流的Files工具类;以及提供一些java中Math里没有的额外的数学运算方法或者更有效率实现方式的数学运算工具类(Int|Long|Double)Math等。