Type Object

[Résolu]
Signaler
Messages postés
5
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
7 mars 2007
-
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
-
Bonjour ayant une application a réalisé lors de ma requête à la base PostGreSql, celle-ci me retourne un Object[][] pour pouvoir l'utilisé il faudrait que je puisse récupérer le paramètre qu'il contient (int,string ,...) et j'aimerais savoir savoir si il existe une méthode donnant le type d'un object.

Merci de vos réponse

Le katana est la plus puissante des armes .....

9 réponses

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut oui et non

enfait tu ne gère pas le fait que la première fois tu as resultat[i] instanceof Object[] donc ton code ne matche pas je te conseil plus (pour rappel tu as dis 'me retourne un Object[][]') :

Object[][] resultat = sqlServer.getResult();

obejcts(resultat);

public void objects(Object[] objs) {
        for (int i = 0; i < objs.length; i++) {
            Object specifier = objs[i];
            if (specifier instanceof Object[]){
                System.out.println("L'objet est de type Object[] : " + specifier);
                objects((Object[]) specifier);
            }else{
                if(specifier instanceof Double){
                    System.out.println("L'objet est de type Double : " + specifier);
                }else if(specifier instanceof String){
                    System.out.println("L'objet est de type String : " + specifier);
                }else if(specifier instanceof Boolean){
                    System.out.println("L'objet est de type Boolean : " + specifier);
                }else if(specifier instanceof Float){
                    System.out.println("L'objet est de type Float : " + specifier);
                }else if(specifier instanceof Integer){
                    System.out.println("L'objet est de type Integer : " + specifier);
                }
            }
        }
    }

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

il existe
Object o = ....;
if(o instanceof String)
    System.out.println("instance of String");
else if(o instanceof Integer)
    System.out.println("instance of Integer");

ou encore
Object o = ...;
if(String.class.isInstance(o))
    System.out.println("instance of String");
else if(Integer.class.isInstance(o))
    System.out.println("instance of Integer");

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
7 mars 2007

Je suis d'accord cela fonctionne pour un "Object variable;" mais pour ce qui est d'un tableau d'Object ou aors je m'y suis mal pris. Merci de votre compréhesion

Le katana est la plus puissante des armes .....
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

ba tu parses le tableau

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
7 mars 2007

Désolé pour mon ignorance mais je débute en java et je vois pas ce que tu veux dire par parses
Le katana est la plus puissante des armes .....
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

teste ce petit bout de code je pense qu'il devrait t'eclairer un chouilla (la méthode objects utilise la récursivitée) :

import java.util.Random;

import javax.swing.JFrame;

public class Test {
    public static void main(String[] args) {
        Object [][]objs = {
                { new Random().nextDouble(), "a", new Random().nextBoolean(), new Random().nextFloat(), new JFrame("Frame 1") },
                { new Random().nextDouble(), "b", new Random().nextBoolean(), new Random().nextFloat(), new JFrame("Frame 2") },
                { new Random().nextDouble(), "c", new Random().nextBoolean(), new Random().nextFloat(), new JFrame("Frame 3") },
                { new Random().nextDouble(), "d", new Random().nextBoolean(), new Random().nextFloat(), new JFrame("Frame 4") },
                { new Object[]{ new Random().nextDouble(), "d", new Random().nextBoolean(), new Random().nextFloat(), new JFrame("Frame 5") }}
        };
       
        objects(objs);
    }
   
    public static void objects(Object[] objs) {
        for (int i = 0; i < objs.length; i++) {
            Object specifier = objs[i];
            if (specifier instanceof Object[]){
                System.out.println("L'objet est de type Object[] : " + specifier);
                objects((Object[]) specifier);
            }else{
                if(specifier instanceof Double){
                    System.out.println("L'objet est de type Double : " + specifier);
                }else if(specifier instanceof String){
                    System.out.println("L'objet est de type String : " + specifier);
                }else if(specifier instanceof Boolean){
                    System.out.println("L'objet est de type Boolean : " + specifier);
                }else if(specifier instanceof Float){
                    System.out.println("L'objet est de type Float : " + specifier);
                }else if(specifier instanceof JFrame){
                    System.out.println("L'objet est de type JFrame : " + ((JFrame)specifier).getTitle());
                }
            }
        }
    }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
5
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
7 mars 2007

J'ai essayer comme tu m'a dit  et j'ai incorporé à mon code sa donnerait sa tu es d'accord avec ?

    Object[] resultat = sqlServer.getResult();

    for (int i = 0; i < resultat.length; i++)
    {
            Object specifier = resultat[i];
            if(specifier instanceof Double)
            {
                System.out.println("L'objet est de type Double : " + specifier);
            }else if(specifier instanceof String)
            {
                System.out.println("L'objet est de type String : " + specifier);
            }else if(specifier instanceof Boolean)
            {
                System.out.println("L'objet est de type Boolean : " + specifier);
            }else if(specifier instanceof Float)
            {
                System.out.println("L'objet est de type Float : " + specifier);
            }
            else if(specifier instanceof Integer)
            {
                System.out.println("L'objet est de type Integer : " + specifier);
            }
    }

Le katana est la plus puissante des armes .....
Messages postés
5
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
7 mars 2007

Ca fonctionne à la perfection comme ca.
Je te remercie pour ton aide et ta patience. Merci

Le katana est la plus puissante des armes .....
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

mais de rien et au plaisir sur le forum (ou l'espace sources && tutos)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA