Как вернуть несколько объектов из метода 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
Как вернуть несколько объектов из метода Java?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.