bitte euch um programmcode zu erklären

catarina

Grünschnabel
:confused::-):suchen:
ich habe leider diese programmcode nicht verstanden kann bitte jemand mir das erklären.
ich wäre sehr dankbar


Java:
public boolean equals(Object o) {
		boolean res = false;
		if (o.getClass().equals(getClass())) {
			BeanInfo bi;
			try {
				bi = Introspector.getBeanInfo(getClass());
			}
			catch(Exception e) {
				return false;
			}
			PropertyDescriptor[] pds = bi.getPropertyDescriptors();
			res = true;
			for(int i=0; i<pds.length; i++) {
				if (pds[i].getName().equals("class") || pds[i].getName().equals("id")) {
					continue;
				}
				Method readM = pds[i].getReadMethod();
				if (readM != null) {
					try {
						Object valueThis = readM.invoke(this, (Object[])null);
						Object valueOther = readM.invoke(o, (Object[])null);
						if (valueThis==null) {
							if (valueOther!=null) {
								if (valueOther instanceof Collection) {
									if(((Collection)valueOther).size()!=0) {
										res = false;
										break;
									}
								}
								else {
									res = false;
									break;
								}
							}
						}
						else {
							try {
								if (valueThis instanceof Collection && valueOther instanceof Collection) {
									if (((Collection)valueThis).size() != ((Collection)valueOther).size()) {
										res = false;
										break;
									}
								}
								else if (!valueThis.equals(valueOther)) {
									res = false;
									break;
								}
							}
							catch (Exception e) { 							}
						}
					}
					catch (InvocationTargetException e) {
						return false;
					}
					catch (IllegalAccessException e) {/*nop*/}
				}
			}
		}
		return res;
	}
 
Zuletzt bearbeitet von einem Moderator:
*lol* da versucht wohl jemand eine generische equals methode zu implementieren, die nicht nur völlig mies implementiert ist, sondern auch noch falsch ;). Das Ding holt sich per Reflection alle lesenden Methoden (Getter) ruft diese für das eigene Objekt und das andere Objekt auf und vergleicht die Rückgabewerte. Kommt eine Collection zurück werden die Inhalte noch überprüft.

Wie gesagt - einfach falsch. Mal abgesehen davon, dass es unsinnig ist, so equals implementieren zu wollen (equals hat etwas fachliches und ist nicht einfach true, wenn alle Objekteigenschaften gleich sind) ist die Implementierung einfach nur mies. Getter mit Parametern werden z.B. knallen. Der Programmierstil ist ebenfalls unterirdisch. Gegenfrage: wer schreibt so einen Unsinn? ;)

Am besten, du vergisst das ganz schnell wieder :P

REINHAUN!
 
Zurück