Datentypen Typ eines Arrays überprüfen

HO!

Mitglied
Guten Morgen,

für ein Programm bekomme ich Arrays übergeben. Diese können String-Arrays oder Int-Arrays sein. Je nachdem, um was für ein Array es sich handelt, soll ein anderer Programmcode durchlaufen werden.

Frage: Wie frage ich den Typ eines Arrays ab?
Ich stelle mir das gedanklich so in der Art vor:

Java:
if (array isString) {
}
else {
}
Aber das ist natürlich nicht der richtige Code. Könnt ihr mir sagen, wie das funktioniert?
 

HO!

Mitglied
Ah, das ist sehr hilfreich! Wie würde dann der Vergleich mit "String" oder "int" erfolgen, also dass die entsprechende If-Funktion gestartet wird?
Mit
Java:
(array.getClass().getComponentType());
bekomme ich den Typ des Arrays heraus, die if-Funktion soll ja dann greifen, wenn es vom Typen String (bzw. int) ist.
 

HO!

Mitglied
@Flown: An das Überladen von Methoden hatte ich auch gedacht, aber ich weiß nicht, ob das in meinem Fall anwendbar ist, schließlich soll ja, je nachdem, ob es ein String-Array oder ein int-Array ist, ein ganz anderer Programmcode durchlaufen werden.
In etwa so:
Java:
if (array isString) {
Programmcode 1
}
else  {
Programmcode 2
}
 

Nuiton

Bekanntes Mitglied
In diesem Fall kannst du auch folgendes benutzen:
Java:
import java.lang.reflect.Field;

public class Test
{

    String[] someStringArray;
    int[] someIntArray;
    Object[] someObjectArray;
    char[] someCharArray;
    String str;


    public static void main(String... args)
    {
        Field[] flds = Test.class.getDeclaredFields();
        for (Field f : flds)
        {
            Class<?> c = f.getType();

            if (c == String[].class)
            {
                    System.out.println("Feld " + f.getName() + " ist String[]");
            }
            if (c == String.class)
            {
                System.out.println("Feld " + f.getName() + " ist String");
            }
            if (c == Object[].class)
            {
                    System.out.println("Feld " + f.getName() + " ist Object[]");
            }
         
            if (c == int[].class)
            {
                    System.out.println("Feld " + f.getName() + " ist int[]");
            }
         
            if (c == char[].class)
            {
                    System.out.println("Feld " + f.getName() + " ist char[]");
            }
        }
    }
}
 

Joose

Top Contributor
@Flown: An das Überladen von Methoden hatte ich auch gedacht, aber ich weiß nicht, ob das in meinem Fall anwendbar ist, schließlich soll ja, je nachdem, ob es ein String-Array oder ein int-Array ist, ein ganz anderer Programmcode durchlaufen werden.

Genau das richtige für so deinen Fall! Jede Überladung ist eine eigenständige Methode mit eigenem Body.

Dein Vorschlag bzw so wie es Nuiton zeigt ist vielleicht bei einer kurzen Unterscheidung sicher praktischer als eine Überladung, aber wie du selbst schon sagst es soll ganz anderer Code durchlaufen werden.
 

bennemann8

Mitglied
Du kannst auch instanceof verwenden:
Java:
    public static void main(String[] args) {
        //Deine versch. Arrays (bspw. String/Integer)
        Integer[] integerArray = {1,2,3,4,5};
        String[] stringArray = {"Hallo 1","Hallo 2","Hallo 3"};

        //Aufruf deiner Methode, die alle Anweisungen enthält
        doSomething(stringArray); // würde in diesem Fall "Code für String" ausgeben

    }
   
    private static void doSomething(Object[] a){
        if(a instanceof String[]){
            System.out.println("Code for String");
        }else if(a instanceof Integer[]){
            System.out.println("Code for int");
        }
    }
Gruß
bennemann8
 

HO!

Mitglied
Vielen Dank für eure Anregungen! Ich habe mir die Überladung von Methoden von @Joose angesehen und es funktioniert damit tatsächlich :)
Auch der Code von @Nuiton ist praktikabel, aber ich glaube, dass die Methodenüberladung einfacher ist :)
"instanceof" werde ich trotzdem noch ausprobieren @bennemann8 :)
 

Flown

Administrator
Mitarbeiter
Vielen Dank für eure Anregungen! Ich habe mir die Überladung von Methoden von @Joose angesehen und es funktioniert damit tatsächlich :)
Weil es genau für diesen Anwendungsfall gedacht ist!!!!
Auch der Code von @Nuiton ist praktikabel, aber ich glaube, dass die Methodenüberladung einfacher ist :)
"instanceof" werde ich trotzdem noch ausprobieren @bennemann8 :)
Bitte auf keinen Fall probieren oder sonstiges damit anstellen, der Compiler bzw. die JVM macht das dispatching der Methoden und nicht du!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
P Beschreibung eines Arrays Allgemeine Java-Themen 3
S Rücklieferung eines String-Arrays über Methode? Allgemeine Java-Themen 3
H2SO3- dynamisches anlegen der dimensionaltität eines arrays Allgemeine Java-Themen 6
C Alle Bilder eines binären Arrays ausgeben Allgemeine Java-Themen 3
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
G Durchlaufen eines Arrays Allgemeine Java-Themen 4
G Inhalt eines Arrays loggen Allgemeine Java-Themen 8
S Fehler beim return eines String Arrays Allgemeine Java-Themen 3
G anzahl "verwendeter" elemente eines arrays ermitte Allgemeine Java-Themen 2
M Index eines Arrays ermitteln und als Integer ausgeben Allgemeine Java-Themen 7
I Rückgabe eines Arrays aus einer Methode, wie sicher? Allgemeine Java-Themen 3
T Elemente eines Arrays mischen Allgemeine Java-Themen 5
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
F Teil eines Bildes laden Allgemeine Java-Themen 1
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
RalleYTN Input/Output URL eines Zip Entry? Allgemeine Java-Themen 2
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
T Bezeichnung eines Objektes mit String/int kombinieren Allgemeine Java-Themen 3
Z Auswerten eines eingegeben Termes Allgemeine Java-Themen 13
X Registrierung eines Ecore-Models außerhalb der Eclipse-Umgebung Allgemeine Java-Themen 0
R Instanzen eines Programms Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben