if ohne Wirkung

Bouyo

Mitglied
Code:
import java.util.Iterator;
import org.apache.commons.beanutils.BeanMap;

public class ObjectUtils {
          public void test(Object obj) {
    	      BeanMap  aBeanMap = new BeanMap(obj);
    	      
              for (Iterator i = aBeanMap.keySet().iterator(); i.hasNext();) {
            	  String property = (String) i.next();
            	  System.out.println("\"" + property + "\"");
            	  
            	  if ( property == "class" ) {
            		  System.out.println("Dieses ist class!");
            	  }
            }
       }
}

liefert mir für eine TestKlasse z.B. folgendes zurück
HTML:
     "aFloat"
     "aInt"
     "aString"
     "class"
     "aDate"

Die Anweisung
Code:
            	  if ( property == "class" ) {
            		  System.out.println("Dieses ist class!");
            	  }

scheint keine Wirkung zu zeigen, weis jemand woran es liegen könnte?
 
Zuletzt bearbeitet von einem Moderator:

haui95

Bekanntes Mitglied
Java:
if (property.equals("class")) {
    System.out.println("Dieses ist class!");
}

Der Vergleich mit Strings wird generell mit equals() gemacht, da beim Vergleichen von Strings mit Vergleichsoperatoren Probleme auftreten können.
 
Zuletzt bearbeitet:

jstei001

Aktives Mitglied
Genauer gesagt heißt dass: Bei Strings kann man nicht mit == vergleichen sondern muss die Methode euqals(String otherString) von der Klasse String nehmen. Es gibt noch EqualsIgnoreCase die berücksichtigt keine Groß- und Kleinschreibung.
 
N

nillehammer

Gast
Crian's Antwort etwas ausführlicher:

Prüfung auf Gleichheit bei Objekten mit equals(...)
Prüfung auf Identität bei Objekten mit ==.

Unterschied von gleich und identisch:
Gleichheit: Zwei zu vergleichende Entitäten sind genau dann gleich, wenn alle für die Gleichheit als relevant angesehenen Merkmale gleich sind.

Identität: Zwei zu vergleichende Entitäten sind dann identisch, wenn es sich um ein und die selbe Entität handelt.
 

Solor

Aktives Mitglied
Du könntest es auch mit compareTo() machen, das sähe dann so aus:
Java:
if (property.compareTo("class") == 0)
{
    System.out.println("Dieses ist class!);
}
 
S

Spacerat

Gast
Tja... wurde ja schon alles gesagt... obwohl da fällt mir noch 'ne Kleinigkeit ein, was Literale un Variablen angeht (könnte man direkt mit in die FAQ aufnehmen):
[c]"literal".equals(variable)[/c] statt [c]variable.equals("literal")[/c]. Wenn die Variable null ist, fliegt beim 2. eine NPE, beim 1. nicht. Ist zwar keine Pflicht, das 1. zu nehmen aber evtl. besser. Das 2. eignet sich hervorragend im Entwicklungsstadium einer Software, um Fehlern auf den Grund zu gehen, das 1. ist dagegen ein wenig mehr Absturzreduzierend.
 

tfa

Top Contributor
[c]"literal".equals(variable)[/c] statt [c]variable.equals("literal")[/c]. Wenn die Variable null ist, fliegt beim 2. eine NPE, beim 1. nicht. Ist zwar keine Pflicht, das 1. zu nehmen aber evtl. besser. Das 2. eignet sich hervorragend im Entwicklungsstadium einer Software, um Fehlern auf den Grund zu gehen, das 1. ist dagegen ein wenig mehr Absturzreduzierend.

Ich würde von Variante 1 fast immer abraten. Das macht nur Sinn, wenn man wirklich weiß, dass null für variable ein legaler Wert ist (normalerweise möchte man aber null-Werte vermeiden). In allen anderen Fällen soll die NPEx möglichst sofort fliegen. Variante 1 ist dann nicht "absturzreduzierend" sondern fehlerverschleiernd.
 
S

Spacerat

Gast
Ich würde von Variante 1 fast immer abraten. Das macht nur Sinn, wenn man wirklich weiß, dass null für variable ein legaler Wert ist (normalerweise möchte man aber null-Werte vermeiden). In allen anderen Fällen soll die NPEx möglichst sofort fliegen. Variante 1 ist dann nicht "absturzreduzierend" sondern fehlerverschleiernd.
Genau deswegen sagte ich das mit der "Entwicklungsphase". In dieser stellt man entweder fest, dass Nullwerte legal sind oder man merzt sie mit Variante 2 erstmal aus. Zur Distribution kann man dann getrost Variante 1 verwenden. Anwender der Software können dann nicht meckern, dass da unvorhergesehene Sachen passieren, weil sie diskret vor eine Wand fahren. Andernfalls müsste sich immer der Programmierer rechtfertigen, und herausfinden, wie der Anwender genau dort Fehler hinbekommt, wo eigentlich jeder Usecase durchgespielt wurde. API nicht gelesen? Reflections, JNI oder sonst was benutzt? Und der Anwender erwartet dann auch noch sein "täglich BugFix". :lol:
 

tfa

Top Contributor
Genau deswegen sagte ich das mit der "Entwicklungsphase". In dieser stellt man entweder fest, dass Nullwerte legal sind oder man merzt sie mit Variante 2 erstmal aus. Zur Distribution kann man dann getrost Variante 1 verwenden.

Allein diese Annahme ist schon ziemlich weltfremd. Was soll "die Entwicklungsphase" sein? Es wird immer entwickelt. Selbst wenn die Software produktiv ist gibt es Service-Releases, Bugfixes usw. Man kommt ja auch nicht auf die Idee, Unittests wegzuschmeißen, nur weil man glaubt, aus der Entwicklungsphase raus zu sein.
Selbst wenn man diese "Phasen" abgrenzen könnte, ist es wohl recht unsinnig anzunehmen, man würde für die "Distribution" eben mal den ganzen Quelltext durcharbeiten, um aus Variante 2 Variante 1 zu machen. Was du vielleicht meinst sind asserts.
Außerdem stellt man während der Entwicklung nicht "fest, ob Nullwerte legal sind". Das sollte schon irgendwo definiert und dokumentiert sein -- wenn man weiß, was man tut.

Anwender der Software können dann nicht meckern, dass da unvorhergesehene Sachen passieren, weil sie diskret vor eine Wand fahren.
Ich bin mir nicht sicher, ob ich den Satz richtig verstehe. Du willst den Anwender die NullpointerException ersparen und das Programm weiter laufen lassen?

Andernfalls müsste sich immer der Programmierer rechtfertigen, und herausfinden, wie der Anwender genau dort Fehler hinbekommt, wo eigentlich jeder Usecase durchgespielt wurde. API nicht gelesen? Reflections, JNI oder sonst was benutzt? Und der Anwender erwartet dann auch noch sein "täglich BugFix".
Tja, wenn das Programm nicht funktioniert, wird sich wohl irgend jemand verantworten und erbarmen müssen, den Bug zu fixen. Wer kann das wohl sein? Dann ist mir eine NPEx mit Stacktrace und Zeilennummer sofort lieber -- als in zwei Monaten unerklärliche Report-Ergebnisse, weil Daten falsch berechnet wurden.
 
S

Spacerat

Gast
Das diese Einstellung weltfremd ist, ist mir schon klar, aber es gibt schlimmeres. Ich sag's mal so. Andere haben diese Exceptions noch viel lieber, schliesslich sagen sie ja nicht nur etwas darüber aus, was schief gelaufen ist, sondern vor allem auch wo. Eine Stelle, an der das Programm definitiv korrumpierbar ist.
Also ja, ich würde das Programm weiterlaufen lassen. Ne' Bug-Meldung wird's ja wohl kaum geben, wenn alle immer wüssten, was sie tun.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H addActionListener und setActionCommand ohne Wirkung Java Basics - Anfänger-Themen 2
R setBackground() ohne Wirkung ? Java Basics - Anfänger-Themen 7
C Methoden Ausgabe aller Attribute einer Instanz ohne einzelne Methode Java Basics - Anfänger-Themen 3
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
P 2n Potenzieren ohne Math.pow oder pow Java Basics - Anfänger-Themen 8
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
S Was macht ++ ohne Schleife? Java Basics - Anfänger-Themen 4
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
M for schleife ohne geschweifte Klammer Java Basics - Anfänger-Themen 15
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
S Teilen ohne Rest Java Basics - Anfänger-Themen 15
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
F Hilfe - Wahrheitswert überprüfen ohne If Java Basics - Anfänger-Themen 2
ZH1896ZH Java-SemesterTest ohne Lösung :( Java Basics - Anfänger-Themen 47
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
C Teilbarkeit ohne "if" Java Basics - Anfänger-Themen 3
M Double Wert nach n abschneiden ohne zu runden Java Basics - Anfänger-Themen 1
B Input/Output System.out.print mit und ohne "" Java Basics - Anfänger-Themen 5
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
R for schleife ohne klammer Java Basics - Anfänger-Themen 14
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
C Problem: PC ohne Internet und keine Möglichkeit Programme zu laden Java Basics - Anfänger-Themen 5
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
B Potenzrechnung mit WindowBuilder ohne math.pow() Java Basics - Anfänger-Themen 1
Jackii ArrayList ausgabe ohne Dopplung Java Basics - Anfänger-Themen 11
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
D .txt überschreiben mit BufferedWriter ohne reset Java Basics - Anfänger-Themen 6
H Cäsar chiffrierung ohne if-Anweisung Java Basics - Anfänger-Themen 5
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
B Potenzen ohne Math.pow Java Basics - Anfänger-Themen 4
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
M Liste ohne Duplikate Java Basics - Anfänger-Themen 8
S Rekursiver InsertionSort ohne Schleife Java Basics - Anfänger-Themen 7
4 Median ohne Array Rausbekommen Java Basics - Anfänger-Themen 8
L Auf Methoden einer Subklasse zugreifen ohne Typecast ? Java Basics - Anfänger-Themen 6
5 for-Schleife ohne 3 Angaben Java Basics - Anfänger-Themen 2
D Sortiertes Array mischen ohne Duplikat Java Basics - Anfänger-Themen 5
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
P JavaFX ohne FXMLLoader Java Basics - Anfänger-Themen 3
J Erstellen einer Datei ohne path Java Basics - Anfänger-Themen 1
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
M Abbrechen Methode ohne return Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben