Guava 常用工具类
发布时间:2020-12-15 07:58:44 所属栏目:Java 来源:网络整理
导读:引入guava包: dependency groupId com.google.guava / groupId artifactId guava / artifactId version 11.0.2 / version / dependency 1、Preconditions 前置校验 前置条件适用于当判断与设置的条件不符合时, 抛出异常的操作。(注意:是抛出异常,对于那
引入guava包: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>11.0.2</version> </dependency>
1、Preconditions 前置校验
前置条件适用于当判断与设置的条件不符合时,
抛出异常的操作。(注意:是抛出异常,对于那些想在判空时做相应的处理可以用jdk8中的Optional)
下面给出:
1)对象判空,抛出异常
2)List对象判空,抛出异常
3)数字类型条件判断,抛出异常
public class PreconditionsExample { public static void main(String[] args) { /** * 对象判空处理 */ UserInfo userInfo = null; Preconditions.checkNotNull(userInfo,"userInfo不能为null"); /** * List对象判空处理 */ List<String> list = Lists.newArrayList(); Preconditions.checkNotNull(list,"传入的list不能为null"); /** * 数值类型判断处理 */ Long projectId = -12L; Preconditions.checkNotNull(projectId,"projectId不能为null"); Preconditions.checkArgument(projectId > 0,"输入projectId必须大于0",projectId); } class UserInfo{ private String name; } }
利用Otpinal来对返回的单个对象进行包装(注意:所有的对象都要封装)
下面的例子中,判断UserInfo是否为null,以及对于Long类型如果为null,比如,前段没有传递该参数则,此时可以将其设置为0。
@Slf4j public class OptionalExample { public static void main(String[] args) { Optional<UserInfo> userInfo = Optional.ofNullable(getUserInfo()); if (!userInfo.isPresent()){ log.info("userInfo is null"); } Optional<Long> projectIdOptional = Optional.ofNullable(getProjectId()); Long projectId = projectIdOptional.orElse(0L); // 如果projectId为null时,这值为0 } public static UserInfo getUserInfo() { return null; } public static Long getProjectId() { return null; } @Getter @Setter class UserInfo{ private String userName; } } 2、retryer实现接口重试机制 <dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> <version>2.0.0</version> </dependency> (2)实现代码示例如下: @Slf4j public class RetryerExample { public static void main(String[] args) throws Exception { Retryer<Boolean> retryer = RetryerBuilder.<Boolean>newBuilder() .retryIfResult(Predicates.<Boolean>isNull()) // 设置自定义段元重试源 .retryIfExceptionOfType(Exception.class) // 设置异常重试源 .retryIfRuntimeException() // 设置异常重试源 .withStopStrategy(StopStrategies.stopAfterAttempt(5)) // 设置重试次数 设置重试超时时间???? .withWaitStrategy(WaitStrategies.fixedWait(5L,TimeUnit.SECONDS)) // 设置每次重试间隔 .build(); Callable<Boolean> task = new Callable<Boolean>() { int i = 0; @Override public Boolean call() throws Exception { i++; log.info("第{}次执行!",i); if (i<3) { log.info("模拟执行失败"); throw new IOException("异常"); } return true; } }; try { retryer.call(task); } catch (ExecutionException e) { log.error("error",e); } catch (RetryException e) { log.error("error",e); } Boolean result = task.call(); log.info("成功输出结果:{}",result); } } ? 分析: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |