IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Appelle de fonction avant création d'objet [plus d'info]


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Par défaut Appelle de fonction avant création d'objet [plus d'info]
    bonjour,
    J'aurai simplement plus d'informations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class MyClass
    {
    	\\0
    	public sousClass() {
    		System.out.println("objet en creation");
    	}
     
    	\\1
    	{
    		System.out.println(" | R1 | ");
    	}
     
    	\\2
    	static
    	{
    		System.out.println(" | R2 | ");
    	}
    }
    Quand je crée un objet MyClass \\2 puis \\1 et enfin \\0 sont appellés...
    c'est a dire :" | R2 | | R1 | objet en creation"

    La seule chose à retenir est t'elle cette ordre ? ou c'est plus profond que ca ?

    PS: Comment s'appelle cette technique d'appeler une fonction automatiquement avant la création d'une fonction ?
    Martin MAGAKIAN
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Par défaut
    Citation Envoyé par diva_69 Voir le message
    bonjour,
    J'aurai simplement plus d'informations :
    La seule chose à retenir est t'elle cette ordre ? ou c'est plus profond que ca ?

    PS: Comment s'appelle cette technique d'appeler une fonction automatiquement avant la création d'une fonction ?
    Martin MAGAKIAN
    Merci
    Salut,
    Et çà compiles ?
    Telle que tu poses ta question tu ne risques pas d'avoir une réponse satisfaisante.
    Tu veux peut être parler de l'initialisation statique. Sois plus claire

  3. #3
    Membre extrêmement actif
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Par défaut
    Nan je pense pas que sa compile, il n'y a pas de constructeur, la procédure sousClasse n'a pas de void et les autres n'ont pas de nom...

    Si tu veux appeler des fonction pendant la création de l'objet, tu écris les appels de fonction dans le constructeur.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zag-yoshi Voir le message
    Nan je pense pas que sa compile, il n'y a pas de constructeur, la procédure sousClasse n'a pas de void et les autres n'ont pas de nom...
    La seule erreur vient du nom du constructeur qui ne correspond pas à la classe (sousClass au lieu de MYClass) et les commentaire qui sont inversé (\\ au lieu de //).

    Le reste est tout à fait correcte et fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class MyClass {
     
    	// 0
    	public MyClass() {
    		System.out.println("objet en creation");
    	}
     
    	// 1
    	{
    		System.out.println(" | R1 | ");
    	}
     
    	// 2
    	static {
    		System.out.println(" | R2 | ");
    	}
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	// 2
    	static {
    		System.out.println(" | R2 | ");
    	}
    Ceci est un bloc d'initialisation static qui sera exécuté une seule fois lors du chargement de la classe par le ClassLoader.
    Ce code est exécuté en même temps que les initialisations des attributs static...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	// 1
    	{
    		System.out.println(" | R1 | ");
    	}
    Ceci est un bloc d'initialisation d'instance qui sera exécuté à chaque création d'objet juste avant le constructeur.
    Ce code est exécuté en même temps que les initialisations des attributs d'instance...


    a++

  5. #5
    Membre expérimenté Avatar de ze_corsaire
    Inscrit en
    Décembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2007
    Messages : 240
    Par défaut
    Je ne suis pas fan des blocs statiques, on ne sait jamais quand ils seront appelés précisément, ceci dépendant du compilo.
    Exemple : un appel à
    peut provoquer ou non le déclenchement des blocs statiques, selon le compilateur choisi (je crois me souvenir que jikes les chargeait et pas javac) donc pour ce qui en est de ton ordre de lancement, tu peux être confronté aux mêmes types de surprise .



  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Un appel à MyClass.class ne provoque pas l'exécution des blocs static. Par contre il me semble que c'était le cas dans les anciens JRE (version 1.4 ou inférieur je ne suis plus sûr).

    a++

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/04/2012, 00h02
  2. Réponses: 6
    Dernier message: 08/08/2011, 01h07
  3. [Framework] appeler une fonction avant
    Par robert_trudel dans le forum Spring
    Réponses: 21
    Dernier message: 21/04/2008, 20h15
  4. Réponses: 3
    Dernier message: 10/08/2007, 13h04
  5. Réponses: 11
    Dernier message: 16/10/2005, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo