Class ermitteln/prüfen

snowman2

snowman2

Fortgeschrittenes Mitglied
19
Im OnClick wird mir das geklickte View übergeben. Wie kann ich herrausfinden von welcher Class das View ist? Also so ähnlich wie folgender pseudo Code:
Code:
public void onClick(View v) {
    if (v.class == Button){
        mach was;
    }
}
Ach mist zu früh gepostet, eben gerade noch eine Idee gehabt und sie funktioniert auch noch.
Code:
public void onClick(View v) {
     if (v.getClass() == Button.class) {
         mach was;
     }
}
 
Zuletzt bearbeitet von einem Moderator:
v instanceof Button

würde gehen
 
  • Danke
Reaktionen: snowman2 und Neeldarax
instanceof ist das einzige was man nutzen sollte an dieser Stelle.
 
  • Danke
Reaktionen: snowman2 und Neeldarax
Wieso ist instanceof das einzige was man nutzen sollte?
Schließlich liefert das ja auch true, wenn mit einer Unterklasse geprüft wird, während man die Klasse vergleicht diese Problem ausschließen kann.
 
Ich würde es nicht "Problem" nennen, denn genau das Verhalten macht ja Sinn! Ist sicherlich eine Frage, was man erreichen möchte, aber gerade dafür ist ja die Vererbung da :) Und es ist schon Sinnvoll, dass auch meine Klasse SuperKrasserLeuchteKlickiBuntiButton die Button erweitert gleich behandelt wird - da ja das Verhalten der Klasse "Button" enthalten ist ;)
 
  • Danke
Reaktionen: snowman2
JanF schrieb:
Wieso ist instanceof das einzige was man nutzen sollte?
Schließlich liefert das ja auch true, wenn mit einer Unterklasse geprüft wird, während man die Klasse vergleicht diese Problem ausschließen kann.

Das bei Object-Vergleich ein true rauskommt ist reiner Glücksfall!

getClass() liefert ein Object zurück. Objekte vergleicht man in Java nicht mit "==".
java object vergleichen - Google-Suche

Alle Klarheiten beseitigt? :)

regards
 
naja in dem fall gehts, weil es ja die gleiche referenz ist. man sollte halt nur genau wissen was man tut :)
 
Neeldarax schrieb:
Das bei Object-Vergleich ein true rauskommt ist reiner Glücksfall!

getClass() liefert ein Object zurück. Objekte vergleicht man in Java nicht mit "==".
java object vergleichen - Google-Suche

Alle Klarheiten beseitigt? :)

regards
Ich habe ja nicht geschrieben, dass man mit == vergleichen sollte, sondern nur, dass
Code:
instanceof
nicht der einzige Weg ist und angedeutet warum. Der andere ist natürlich über getClass().equals().

Und letzterer Weg ist sogar zu bevorzugen, wenn man eigene Comparatoren schreibt, weil diese antisymmetrisch* sein sollen, instanceof es aber dabei ungünstig ist.
Ich habe lediglich darauf aufmerksam gemacht, was bei instanceof zu beachten ist.

*bis auf vergleich mit null
 
Zuletzt bearbeitet:
Ihr müsst euch nicht gleich prügeln wegen meiner Frage :biggrin:.

Ich nehme dann halt instanceof. Ich lass mich ja gerne beraten.

Danke euch allen.
 

Ähnliche Themen

E
Antworten
0
Aufrufe
698
enrem
E
J
  • JoEntwickler
Antworten
0
Aufrufe
973
JoEntwickler
J
Horstmann365
Antworten
1
Aufrufe
1.058
jogimuc
J
Zurück
Oben Unten