本文共 3344 字,大约阅读时间需要 11 分钟。
引入guava包:
com.google.guava guava 11.0.2
public class PreconditionsExample { public static void main(String[] args) { /** * 对象判空处理 */ UserInfo userInfo = null; Preconditions.checkNotNull(userInfo, "userInfo不能为null"); /** * List对象判空处理 */ Listlist = 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; }}
@Slf4jpublic class OptionalExample { public static void main(String[] args) { OptionaluserInfo = Optional.ofNullable(getUserInfo()); if (!userInfo.isPresent()){ log.info("userInfo is null"); } Optional 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; }}
com.github.rholder guava-retrying 2.0.0
@Slf4jpublic class RetryerExample { public static void main(String[] args) throws Exception { Retryerretryer = RetryerBuilder. newBuilder() .retryIfResult(Predicates. isNull()) // 设置自定义段元重试源 .retryIfExceptionOfType(Exception.class) // 设置异常重试源 .retryIfRuntimeException() // 设置异常重试源 .withStopStrategy(StopStrategies.stopAfterAttempt(5)) // 设置重试次数 设置重试超时时间???? .withWaitStrategy(WaitStrategies.fixedWait(5L, TimeUnit.SECONDS)) // 设置每次重试间隔 .build(); Callable task = new Callable () { 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); } }
转载地址:http://mgomi.baihongyu.com/