Я использовал новый установщик Eclipse. Мне не понравился путь установки, и я изменил его вручную. После этого я получил сообщение exit = 13.
В файле eclipse.ini
с именем -install
появилось новое свойство. Мне просто пришлось изменить его с новым местоположением, и это решило эту проблему.
В новом установщике я выбрал D:/eclipse
, но IDE была установлена на D:/eclipse/eclipse
. Итак, я переместил папку вручную. В следующий раз, когда я попытался открыть eclipse, я получил ошибку выхода. Таким образом, мне пришлось изменить eclipse.ini
и установить текущее местоположение:
-install
D:/eclipse
В поток на comp.lang.java.help
, Hunter Gratzner дает некоторые аргументы против присутствия Pair
конструкция в Java. Основной аргумент, который является классом Pair
, не передает семантики об отношениях между двумя значениями (как Вы знаете что "первый" и "второй" средний?).
А лучшая практика должна записать очень простой класс, как тот предложенный Mike, для каждой заявки, которую Вы подали бы Pair
класс. Map.Entry
пример пары, которые несут ее значение в ее имени.
Таким образом, по-моему, лучше иметь класс Position(x,y)
, класс Range(begin,end)
и класс Entry(key,value)
, а не дженерик Pair(first,second)
, который ничего не говорит мне о том, что это, как предполагается, делает.
Это зависит от того, для чего Вы хотите использовать его. Типичная причина сделать так состоит в том, чтобы выполнить итерации по картам, для которых Вы просто делаете это (Java 5 +):
Map<String, Object> map = ... ; // just an example
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.printf("%s -> %s\n", entry.getKey(), entry.getValue());
}
HashMap совместимый Парный класс:
public class Pair<A, B> {
private A first;
private B second;
public Pair(A first, B second) {
super();
this.first = first;
this.second = second;
}
public int hashCode() {
int hashFirst = first != null ? first.hashCode() : 0;
int hashSecond = second != null ? second.hashCode() : 0;
return (hashFirst + hashSecond) * hashSecond + hashFirst;
}
public boolean equals(Object other) {
if (other instanceof Pair) {
Pair otherPair = (Pair) other;
return
(( this.first == otherPair.first ||
( this.first != null && otherPair.first != null &&
this.first.equals(otherPair.first))) &&
( this.second == otherPair.second ||
( this.second != null && otherPair.second != null &&
this.second.equals(otherPair.second))) );
}
return false;
}
public String toString()
{
return "(" + first + ", " + second + ")";
}
public A getFirst() {
return first;
}
public void setFirst(A first) {
this.first = first;
}
public B getSecond() {
return second;
}
public void setSecond(B second) {
this.second = second;
}
}
Пара была бы хорошей вещью, чтобы быть базовой конструкционной единицей для сложных дженериков, например, это из моего кода:
WeakHashMap<Pair<String, String>, String> map = ...
Это то же самое, что и Tuple Haskell
Это Java. Вы должны создать свой собственный класс Pair с описательными классами и именами полей, не говоря уже о том, что вы изобретете колесо, написав hashCode () / equals () или реализовав Comparable снова и снова.