一种 java method 返回多个对象的包装类

一句话总结:定义 N 个泛型做成员变量

根据业务需求可取消 NonNull 的限定

import lombok.NonNull;

public final class Pair<S, T> {
    @NonNull
    private final S first;
    @NonNull
    private final T second;

    public static <S, T> Pair<S, T> of(S first, T second) {
        return new Pair(first, second);
    }

    public S getFirst() {
        return this.first;
    }

    public T getSecond() {
        return this.second;
    }

    public String toString() {
        return "Pair(first=" + this.getFirst() + ", second=" + this.getSecond() + ")";
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Pair)) {
            return false;
        } else {
            Pair<?, ?> other = (Pair)o;
            Object this$first = this.getFirst();
            Object other$first = other.getFirst();
            if (this$first == null) {
                if (other$first != null) {
                    return false;
                }
            } else if (!this$first.equals(other$first)) {
                return false;
            }

            Object this$second = this.getSecond();
            Object other$second = other.getSecond();
            if (this$second == null) {
                if (other$second != null) {
                    return false;
                }
            } else if (!this$second.equals(other$second)) {
                return false;
            }

            return true;
        }
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $first = this.getFirst();
        int result = result * 59 + ($first == null ? 43 : $first.hashCode());
        Object $second = this.getSecond();
        result = result * 59 + ($second == null ? 43 : $second.hashCode());
        return result;
    }

    private Pair(@NonNull S first, @NonNull T second) {
        if (first == null) {
            throw new IllegalArgumentException("first is null");
        } else if (second == null) {
            throw new IllegalArgumentException("second is null");
        } else {
            this.first = first;
            this.second = second;
        }
    }
}

参考自 spring data 源码~


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:一种 java method 返回多个对象的包装类

字数:305

本文作者:夏来风

发布时间:2020-10-20, 23:18:29

原始链接:http://www.demo1024.com/blog/java-pair/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。