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 :

[debutant] Méthode static


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 4
    Points : 7
    Points
    7
    Par défaut [debutant] Méthode static
    Bonjour,
    Je sais qu'il est possible d'utiliser une méthode statique comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class MaClasse {
       static {
       }
    }
    Mais je n'ai pas trouvé quelle utilisation il fallait en faire. Merci si vous avez des explications à me donner sur cette méthode et des avis sur son emploi.
    "Les choses que l'on ne commence jamais sont les plus longues à terminer"

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Si je ne me trompe:

    ce n'est pas un méthode mais un bloc que tu définis comme static

    d'une façon générale un { } est un bloc qui déclare la portée de variables
    (j'en mais dans des méthodes pour avoir un indentation lors de la composition d'objets swing)

    C'est pratique pour la lecture et pour les commentaires, surtout comme le bloc contient des instructions qui doivent conserver une structure séquentielle.

    De cette généralité on produit des spécialité par l'utilisation des identifieurs (nom et type) de bloc et des modifieurs (public , abstract etc...)

    donc tu déclare non pas une méthode mais un bloc static (utilité de ce bloc ??)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Un spécialiste vient de me dire que ce bloc dans la classe est exécuté lors du chargement de la class par le class loader, c'est un bloc d'initialisation, qui n'est appelable que un seul fois.

    Donc tu mets dedans les instructions que tu veux pour l'initialisation.

    En gros ce serait l'initialisation du moule à gateaux.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut en effet
    en effet ce bloc est comme le constructeur mais pour la classe et pas pour les instances.

    en tout cas, c porc, moche et c MAL.

    s'il s'agit d'initialiser des variables de classe mieux vaut le faire lors de la déclaration de ces variables.
    Il faut aussi penser à Singleton qui dans bien des cas est une meilleur solution à avoir plein de truc static et pas beaux
    Waddle

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Il n'y a aucun rapport entre un Singleton et un initialisateur statique, parceque le rôle d'un singleton n'est pas d'initialiser une et une seule fois une ou plusieurs données d'une classe, mais de garantir un accès unique quelquesoit le Thread à une classe ou une donnée...

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut mais biensur....
    d'accord, c bien

    ecoute thibaut, je sais pas ce que t'as contre moi, mais ca fais un moment que tu te jete sur moi des que je dis un truc pour me casser, donc je relèverai plus ce que tu me dis parce que j'ai pas envie de m'amuser à ca. Si t'as un problème avec moi, je te demande de m'en faire part par MP ou par mail, ou même de contacter les modos.

    ceci etant dit, il y a bien un rapport. Bcp de gens qui ne connaissent pas le Singleton on tendance à mettre plein de membres static car ils se rendent compte qu'il s'agit de champs commun à toutes les instances, puis il se rendent compte qu'il n'ont en fait qu'une seule instance de la classe, c courant car j'ai souvent rencontrer ce type d'erreur (par ignorance) chez les débutants, je l'ai moi même commise. Dc ce que je voulais dire, c que s'il se retrouve ds ce cas, un singleton est mieux que de n'avoir qu'une instance avec des membres static parce qu'au debut il ne se serait pas rendu compte qu'il n'y aurait qu'une seule instance.

    de plus, s'il ne connais pas singleton ca lui sera utile de chercher des infos dessus même si ca lui sert pas dans son cas.
    Waddle

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Non j'ai rien contre toi, absolument rien... je voulais préciser.

  8. #8
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Pour plus de précision...

    Il est dangeureux d'utiliser un Singleton en multi-thread. Il est conseillé d'utiliser le pattern "Verrouillage à double tour". Même ce dernier peut poser des problèmes dans un environnement multi-threading.

    @+
    Bien le bonjour chez vous
    Jowo

  9. #9
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Verrouillage à double tour
    Si tu veux dire le double-lock (in english), il ne fonctionne pas correctement en java, et fonctionne pas dans tous les cas dans d'autre langages (suivant les implémentations), il faut alors lui préférer l'uilisation de ThreadLocal ...


  10. #10
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut pk ?
    pk ne fonctionne-t-il pas correctement en Java ??? je savais pas, et j'ai un peu peur la quand même....
    Waddle

  11. #11
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085

  12. #12
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 88
    Points
    88
    Par défaut tres intéressant
    c tres interessant, je connaissais le problème en multi-thread de singleton et donc de l'existance du double-verrou mais c vrai que sans etre un super spécialiste de Java et de l'archi système d'une machine c difficile d'imaginer pk ca marche pas.

    merci pour cette découverte

    bon j'ai fini de tout lire, et au moins y a une solution, mais franchement je respecte celui qui a vu que ca marchait pas alors qu'il devait se dire que ca pouvait pas venir de la.
    Waddle

  13. #13
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Ben c'est clair, conceptuellement le singleton et le double-lock c'est super chouette, mais en pratique... moi je me suis retrouvé avec plusieurs instances (dans le cas du double-lock) de mon singleton...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] Méthode static
    Par wxwally dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/03/2008, 01h04
  2. Réponses: 9
    Dernier message: 12/04/2007, 17h08
  3. [FLASH MX2004] [AS2] Classe méthodes static
    Par bolo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 16/12/2004, 18h26
  4. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 17h12
  5. [Debutant] Méthodes numériques
    Par griffu01 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 24/05/2004, 21h21

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