Hallo,
ich versuche seit Stunden, folgenden Code nachzuvollziehen, den ich nicht selbst geschrieben habe. Ich verstehe auch alles bis auf folgendes. Bei der Zeile mit dem Schlüsselwort switch steht in den Klammern ein Variablenaufruf vom Typ int. Verglichen wird dieser int allerdings über case mit Strings. Wie kann das funktionieren und was passiert hier? Bitte ich bin echt am Verzweifeln... Danke im Vorraus
ich versuche seit Stunden, folgenden Code nachzuvollziehen, den ich nicht selbst geschrieben habe. Ich verstehe auch alles bis auf folgendes. Bei der Zeile mit dem Schlüsselwort switch steht in den Klammern ein Variablenaufruf vom Typ int. Verglichen wird dieser int allerdings über case mit Strings. Wie kann das funktionieren und was passiert hier? Bitte ich bin echt am Verzweifeln... Danke im Vorraus
Code:
package com.thomaskuenneth.tierkreiszeichen;
import android.content.Context;
/**
* Diese Klasse speichert Informationen über ein Tierkreiszeichen:
* <ul>
* <li>erster Tag des Datumsbereichs, den es abdeckt</li>
* <li>Monat, in dem dieser Bereich beginnt</li>
* <li>eine Zahl, die das Sternzeichnen kennzeichnet</li>
* </ul>
* <p/>
* Die Methode {@link #getIdForDrawable()} liefert einen Wert, der für
* das Zeichnen des Tierkreiszeichens verwendet werden kann. Damit das
* funktioniert, muss das Sternzeichen aus {@code R.string} belegt
* werden.
*
* @author Thomas Künneth
* @see Zodiak
*/
final class Tierkreiszeichen {
private final int tierkreiszeichen;
// Wann ein Sternzeichen beginnt
private final int tag, monat;
Tierkreiszeichen(int tag, int monat, int tierkreiszeichen) {
this.tag = tag;
this.monat = monat;
this.tierkreiszeichen = tierkreiszeichen;
}
int getTag() {
return tag;
}
int getMonat() {
return monat;
}
String getName(Context context) {
return context.getString(tierkreiszeichen);
}
/**
* Liefert einen Wert aus {@code R.drawable},
* der für das Zeichnen des
* Sternzeichens verwendet werden kann.
*
* @return Wert aus {@code R.drawable}
*/
int getIdForDrawable() {
switch (tierkreiszeichen) {
case R.string.aquarius:
return R.drawable.aquarius;
case R.string.aries:
return R.drawable.aries;
case R.string.cancer:
return R.drawable.cancer;
case R.string.capricornus:
return R.drawable.capricornus;
case R.string.gemini:
return R.drawable.gemini;
case R.string.leo:
return R.drawable.leo;
case R.string.libra:
return R.drawable.libra;
case R.string.pisces:
return R.drawable.pisces;
case R.string.sagittarius:
return R.drawable.sagittarius;
case R.string.scorpius:
return R.drawable.scorpius;
case R.string.taurus:
return R.drawable.taurus;
case R.string.virgo:
return R.drawable.virgo;
default:
return R.drawable.ic_launcher;
}
}
}