Как вернуть несколько объектов из метода Java?

Если вы знаете, что собираетесь return вернуть два объекта, вы также core-java можете использовать общую return пару:

public class Pair {
    public final A a;
    public final B b;

    public Pair(A a, B b) {
        this.a = a;
        this.b = b;
    }
};

Изменить. Более полная реализация java-libraries вышеизложенного:

package util;

public class Pair {

    public static  Pair makePair(P p, Q q) {
        return new Pair(p, q);
    }

    public final A a;
    public final B b;

    public Pair(A a, B b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((a == null) ? 0 : a.hashCode());
        result = prime * result + ((b == null) ? 0 : b.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        @SuppressWarnings("rawtypes")
        Pair other = (Pair) obj;
        if (a == null) {
            if (other.a != null) {
                return false;
            }
        } else if (!a.equals(other.a)) {
            return false;
        }
        if (b == null) {
            if (other.b != null) {
                return false;
            }
        } else if (!b.equals(other.b)) {
            return false;
        }
        return true;
    }

    public boolean isInstance(Class classA, Class classB) {
        return classA.isInstance(a) && classB.isInstance(b);
    }

    @SuppressWarnings("unchecked")
    public static  Pair cast(Pair pair, Class

pClass, Class qClass) { if (pair.isInstance(pClass, qClass)) { return (Pair) pair; } throw new ClassCastException(); } }

Замечания, в j2se основном о ржавости с Java openjdk и дженериками:

  • и a, и b неизменяемы.
  • Статический метод
  • makePair поможет вам с обычным набором текста, который оператор ромба в Java 7 сделает менее раздражающим. Есть некоторая работа по созданию действительно хороших re: generics, но теперь все должно быть в порядке. (см. PECS)
  • hashcode и equals генерируются eclipse.
  • приведение типов времени компиляции в методе cast в порядке, но кажется не совсем правильным.
  • Я не уверен, нужны ли подстановочные знаки в isInstance.
  • Я только что написал это в ответ на комментарии, только для иллюстрации.

java

return

2022-10-25T11:58:44+00:00