1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Class ermitteln/prüfen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von snowman2, 08.03.2012.

  1. snowman2, 08.03.2012 #1
    snowman2

    snowman2 Threadstarter Erfahrener Benutzer

    Beiträge:
    153
    Erhaltene Danke:
    18
    Registriert seit:
    07.12.2011
    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 von einem Moderator bearbeitet: 09.03.2012
  2. swordi, 08.03.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    v instanceof Button

    würde gehen
     
    snowman2 und Neeldarax haben sich bedankt.
  3. the_alien, 08.03.2012 #3
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    instanceof ist das einzige was man nutzen sollte an dieser Stelle.
     
    snowman2 und Neeldarax haben sich bedankt.
  4. JanF, 08.03.2012 #4
    JanF

    JanF Android-Experte

    Beiträge:
    594
    Erhaltene Danke:
    79
    Registriert seit:
    31.03.2011
    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.
     
  5. sixi, 09.03.2012 #5
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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 ;)
     
    snowman2 bedankt sich.
  6. Neeldarax, 09.03.2012 #6
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    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
     
  7. swordi, 09.03.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja in dem fall gehts, weil es ja die gleiche referenz ist. man sollte halt nur genau wissen was man tut :)
     
  8. JanF, 09.03.2012 #8
    JanF

    JanF Android-Experte

    Beiträge:
    594
    Erhaltene Danke:
    79
    Registriert seit:
    31.03.2011
    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: 09.03.2012
  9. snowman2, 09.03.2012 #9
    snowman2

    snowman2 Threadstarter Erfahrener Benutzer

    Beiträge:
    153
    Erhaltene Danke:
    18
    Registriert seit:
    07.12.2011
    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.
     

Diese Seite empfehlen