java集合为空的话执行条件_java – Guava前提条件检查,空List

我想知道在列表中进行前置条件检查的最佳模式是什么,我需要从中选择第一项.

换句话说,我认为列表不应为null,其大小应为> 1.

我发现Guava的checkPositionIndex在这方面没有帮助.相反,我发现它违反直觉,请参阅下面的例子,它在空列表上炸弹,因为我使用checkPositionIndex而不是checkArgument,如后面没有触发的后卫所概述的那样.

似乎检查位置0不足以验证参数,即使我.get(0)来自它?

import static com.google.common.base.Preconditions.checkArgument;

import static com.google.common.base.Preconditions.checkNotNull;

import static com.google.common.base.Preconditions.checkPositionIndex;

import java.util.List;

import com.google.common.collect.Lists;

public class HowShouldIUseCheckPositionIndex {

private static class ThingAMajig {

private String description;

private ThingAMajig(String description) {

this.description = description;

}

@Override

public String toString() {

return description;

}

}

private static void goByFirstItemOfTheseAMajigs(List things) {

checkNotNull(things);

// Check whether getting the first item is fine

checkPositionIndex(0, things.size()); // Looks intuitive but...

System.out.println(things.get(0)); // Finally, help the economy!

checkArgument(things.size() > 0); // This would have worked :(

}

public static void main(String[] args) {

List fullList =

Lists.newArrayList(new ThingAMajig(

"that thingy for the furnace I have been holding off buying"));

List emptyList = Lists.newLinkedList();

goByFirstItemOfTheseAMajigs(fullList);

// goByFirstItemOfTheseAMajigs(emptyList); // This *bombs*

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值