Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring HttpStatus.valueOf似乎效率低下?_Java_Spring_Spring Boot_Spring Mvc - Fatal编程技术网

Java Spring HttpStatus.valueOf似乎效率低下?

Java Spring HttpStatus.valueOf似乎效率低下?,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,Valueof方法在代码上循环,这在我看来效率很低。我错过什么了吗我正在使用spring 4.2.5 public static HttpStatus valueOf(int statusCode) { for (HttpStatus status : values()) { if (status.value == statusCode) { return status; }

Valueof方法在代码上循环,这在我看来效率很低。我错过什么了吗
我正在使用spring 4.2.5

    public static HttpStatus valueOf(int statusCode) {
        for (HttpStatus status : values()) {
            if (status.value == statusCode) {
                return status;
            }
        }
        throw new IllegalArgumentException("No matching constant for [" + statusCode + "]");
    }

你的困惑是什么?你可以问我。foreach in values(),当statusCode等于
打破循环并返回。

我不确定您到底在问什么,但与较新版本的Spring相比,是的,有一些修改,但逻辑保持不变

在Spring 5.1.7中,它看起来像这样 提及


这里的
resolve
方法看起来像OP的
valueOf
方法的反编译版本。换句话说,不同版本之间没有什么真正的变化。他们添加了一个
resolve
方法,当找不到常量时,该方法返回null而不是抛出异常,但在其他方面,搜索代码完全相同。只有大约60个枚举常量。与应用程序正在做的其他事情(例如,联网)相比,执行循环所需的时间可能微不足道。其实也没有别的办法。我想你可以试试地图,但我不知道这是否真的会更快,你需要配置/基准测试。
    public static HttpStatus valueOf(int statusCode) {
        HttpStatus status = resolve(statusCode);
        if (status == null) {
            throw new IllegalArgumentException("No matching constant for [" + statusCode + "]");
        }
        return status;
    }


    @Nullable
    public static HttpStatus resolve(int statusCode) {
        for (HttpStatus status : values()) {
            if (status.value == statusCode) {
                return status;
            }
        }
        return null;
    }