Mam problem dotyczący porównania obiektów.
Najpierw w jednej funkcji pobieram do tablicy obiektów różne obiekty (różnych typów w tym typów definiowanych przeze mnie). Następnie w drugiej funkcji pobieram z powrotem te obiekty, kastując do odpowiednich typów. Nie wiem czy problem polega z Comboboxem czy z tym jak Object i potem w dół jest rzutowane.
Sytuacja obrazowo:
public Object[] getFields()
{
Object bla[] = new Object[10];
bla[0] = klient.getClient(); // zwraca obiekt typu Klient
bla[1] = p.getPracownik(); // zwraca obiekt typu Pracownik
return bla;
}
A potem sobie odczytuje:
private void fillComboBoxes(){
for(Pracownik p : ((Employees.getEmployees()))){
pracownikCB.addItem(p);
//obiekty typu pracownik
//nastepnie
private void fillFields(Object[] fields, int id){
/*..*/
pracownikCB.setSelectedItem(fields[1]);
System.out.println((Pracownik)fields[1]);
System.out.println(pracownikCB.getItemAt(2));
System.out.println(fields[1].toString().equals(pracownikCB.getItemAt(2)));
System.out.println(fields[1].getClass());
System.out.println(pracownikCB.getItemAt(2).getClass());
System.out.println(fields[1].hashCode());
System.out.println(pracownikCB.getItemAt(2).hashCode());
Generalnie nie ustawia tego obiektu, który miałby zostać wybrany (mam na myśli ComboBoxa pracownikCB), niezależnie czy zrzutuje go na Pracownik (fields[1]) czy nie, stringi obiektów są równe, klasy obiektów również (po zrzutowaniu Object->Pracownik), ale hashCody się różnią.
Dziwi mnie ta sytuacja, gdyż następuje tutaj najpierw rzutuję tutaj w górę do Object, a potem w dół do tego samego typu Pracownik. HashCody się różnią tak jakby różniły się między sobą obiekty, a przecież żadna informacja nie powinna zostać zgubiona.