Java 8 列表范围内的测试索引

Java 8 列表范围内的测试索引,java-8,Java 8,首先,我想告诉大家,我是一名经验丰富的Java开发人员,这不是一个新手问题 我们都知道检查给定索引是否在列表范围内的测试。即: if (index >= 0 && index < list.size()) 谷歌没有给我任何结果,我在新的API中也找不到任何方法。所以也许社区知道是否有这样的东西 我对解决这个问题的第三方库不感兴趣。这不完全是一个答案-只是java 8中辅助方法放置的一个额外选项。但是,没有办法轻松地附加助手接口,因此这不是一个可行的解决方案 publ

首先,我想告诉大家,我是一名经验丰富的Java开发人员,这不是一个新手问题

我们都知道检查给定索引是否在
列表
范围内的测试。即:

if (index >= 0 && index < list.size())
谷歌没有给我任何结果,我在新的API中也找不到任何方法。所以也许社区知道是否有这样的东西


我对解决这个问题的第三方库不感兴趣。

这不完全是一个答案-只是java 8中辅助方法放置的一个额外选项。但是,没有办法轻松地附加助手接口,因此这不是一个可行的解决方案

public interface MyList<E> extends List<E> {
    default boolean isWithinBounds(int index) {
        return 0 <= index && index < this.size();
    }
}

static class MyArrayList<E> extends ArrayList<E> implements MyList<E> {
}

public void testList() {
    MyList<String> l = new MyArrayList<>();
    l.add("1");
    l.add("2");
    l.add("3");
    assert(l.isWithinBounds(2));
    assert(!l.isWithinBounds(3));
}
公共接口MyList扩展列表{
默认布尔值为WithInbounds(整数索引){

返回0,这是捕获
IndexOutOfBoundsException
不合适的地方吗?当然不是,但如果需要,编写实用方法很简单。我发现
if(index>=0&&index
简短明了。实际上,我的目标主要是通过编写此测试时出错来提高可读性和防止错误。我相信在这种情况下使用异常处理会显著降低可读性,甚至会造成性能下降。我看到的问题是不知道索引是否有效这不是一点代码味道。这是用户输入的结果吗?@ChristopherS:最大的问题是为什么任何程序员都应该做这个测试?如果测试失败,预期的操作是什么?通常,应该抛出一个适当的异常来标记错误的索引。这就是
列表
实现已经为您做的事情。
public interface MyList<E> extends List<E> {
    default boolean isWithinBounds(int index) {
        return 0 <= index && index < this.size();
    }
}

static class MyArrayList<E> extends ArrayList<E> implements MyList<E> {
}

public void testList() {
    MyList<String> l = new MyArrayList<>();
    l.add("1");
    l.add("2");
    l.add("3");
    assert(l.isWithinBounds(2));
    assert(!l.isWithinBounds(3));
}