compilation de xxx.java et création de xxx$1.java et xxx$2.java

compilation de xxx.java et création de xxx$1.java et xxx$2.java - Java - Programmation

Marsh Posté le 20-05-2003 à 15:33:59    

Voila tout est dans le titre.
Merci pour vos explications ...

Reply

Marsh Posté le 20-05-2003 à 15:33:59   

Reply

Marsh Posté le 20-05-2003 à 15:43:18    

Classes internes [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 20-05-2003 à 15:57:55    

Taiche a écrit :

Classes internes [:spamafote]


A priori je n'ai qu'une classe dans mon .java :
 
public class JUploadApplet extends Applet {

Reply

Marsh Posté le 20-05-2003 à 16:00:25    

ça m'est déjà arrivé : jamais compris pkoi :??:


Message édité par nero27 le 20-05-2003 à 16:00:43
Reply

Marsh Posté le 20-05-2003 à 16:17:36    

persepolis a écrit :


A priori je n'ai qu'une classe dans mon .java :
 
public class JUploadApplet extends Applet {

t'as surement une classe anonyme interne du genre
setWindowAdadpter(new WindowAdapter() {
     System.exit(0);
  }
}
 
d'ailleurs si elle etait pas anonyme le .class s'appellerait ClasseA$InnerClass.class


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 20-05-2003 à 16:26:59    

the real moins moins a écrit :

t'as surement une classe anonyme interne du genre
setWindowAdadpter(new WindowAdapter() {
     System.exit(0);
  }
}
 
d'ailleurs si elle etait pas anonyme le .class s'appellerait ClasseA$InnerClass.class


 
+1


---------------
get amaroK plugin
Reply

Marsh Posté le 20-05-2003 à 17:30:23    

persepolis a écrit :

Voila tout est dans le titre.
Merci pour vos explications ...


 
rien ne change à ce que je vois  :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 20-05-2003 à 17:31:06    

persepolis a écrit :

Voila tout est dans le titre.
Merci pour vos explications ...


De rien, C'était avec plaisir.


---------------
Le site de ma maman
Reply

Marsh Posté le 20-05-2003 à 20:29:19    

the real moins moins a écrit :

t'as surement une classe anonyme interne du genre
setWindowAdadpter(new WindowAdapter() {
     System.exit(0);
  }
}
 
d'ailleurs si elle etait pas anonyme le .class s'appellerait ClasseA$InnerClass.class


+1

Reply

Marsh Posté le 21-05-2003 à 08:29:00    

Je vous passe mon bout de code ...
Une petite précision:
xxx.java génère à la compil xxx.class xxx$1.class et xxx$2.class
 
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;
 
public class xxxApplet extends Applet {
    //------------- INFORMATION --------------------------------------------
    public static final double VERSION = 2.0;
    public static final String AUTHOR = "Stephane PERDRIX";
    public static final String AUTHOR_EMAIL = "stephane.Perdrix@ipmfrance.com";
    public static final String DESCRIPTION = "Java Applet wrapper for JUploadPanel.";
    public static final String LAST_MODIFIED = "01 July 2002";
 
    public final static String DEFAULT_POST_URL = "http://localhost:8080/";
    public final static String DEFAULT_LOCAL_DIR = "D:/Stl/Client_Log/";
    public final static String DEFAULT_CIBLE_DIR = "D:/Stl/";
    public final static String DEFAULT_FICHIER_ZIP = "D:/Download/outfile.zip";
/*----------------------------------------------------------------------
  private static Logger log = Logger.getLogger(JUploadApplet.class.getName());
  //private static Logger log = Logger.getRootLogger();
------------------------------------------------------------------------ */
    //Get a parameter value
    private boolean isStandalone = false;
 
    public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
                (getParameter(key) != null ? getParameter(key) : def);
    }
 
    //Initialize the applet
    public void init() {
        // Getting Parameters.
        String postURL = this.getParameter("postURL", DEFAULT_POST_URL);
        String localDIR = this.getParameter("localDIR", DEFAULT_LOCAL_DIR);
        String cibleDIR = this.getParameter("cibleDIR", DEFAULT_CIBLE_DIR);
        String fileZIP   = this.getParameter("fileZIP", DEFAULT_FICHIER_ZIP);
        this.setLayout(new BorderLayout());
        //Essai de gestion des logs
 
        JTextArea status = new JTextArea(15, 10) {
            // Overwriting the default Append class such that it scrolls to the
            // bottom of the text. The JFC doesn't always rememeber to do that.
            public void append(String str) {
                super.append(str);
                super.setCaretPosition(super.getText().length());
            }
        };
        status.setBackground(new Color(229, 229, 229));
        status.setEditable(false);
        status.setLineWrap(true);
        status.setWrapStyleWord(true);
        JUploadPanel jp = new JUploadPanel(postURL, localDIR, cibleDIR, fileZIP, null,
                null, null, null, null, null, null, null, null, status, null, this);
        jp.addDoAfterUploadSucc(null);
 
        this.add(jp, BorderLayout.CENTER);
        /*status.append("INFO  : Post URL  = " + postURL + "\n" );
        status.append("INFO  : Local DIR = " + localDIR + "\n" );
        status.append("INFO  : Cible DIR = " + cibleDIR + "\n" );
        status.append("INFO  : Fichier ZIP = " + fileZIP + "\n" );
 try {
  getAppletContext().showDocument(new URL(getCodeBase()+"index.jsp" ));
 } catch (Exception e) {
  e.printStackTrace();
 }*/
 
    }
 
    public void stop() {
        System.out.println("INFO   : Methode STOP de l'applet\n" );
    }
 
    public void destroy() {
        System.out.println("INFO   : Methode DESTROY de l'applet\n" );
    }
}
 
J'vois que The dark n'a pas perdu sa forme légendaire...


---------------
Evite les personnes arrogantes et vulgaires, elles sont un tourment pour l'esprit.
Reply

Marsh Posté le 21-05-2003 à 08:29:00   

Reply

Marsh Posté le 21-05-2003 à 08:31:48    

t'as lu les réponses ? regarde ce que t'as du bobuse et compare avec ton code


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 21-05-2003 à 08:53:32    

J'savais pas qu'on pouvait faire ça : surcharger une méthode d'une classe sans définir explicitement de nouvelle classe. ça peut servir ça, 'faut que je m'en rappelle.

Reply

Marsh Posté le 21-05-2003 à 09:45:00    

mais gros boolay on t'a déjà donné la réponse. Tu les lis les réponses au moins ou tu veux qu'on te donne le numéro de ligne plus explications?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 21-05-2003 à 10:04:03    

El_gringo a écrit :

J'savais pas qu'on pouvait faire ça : surcharger une méthode d'une classe sans définir explicitement de nouvelle classe. ça peut servir ça, 'faut que je m'en rappelle.


Ca s'apelle une classe anonyme, ca peut etre assez crade, mais ca peut etre aussi bougrement pratique ...
 
benou > c'est plutot taiche et -- qui ont repondu ;)


---------------
get amaroK plugin
Reply

Marsh Posté le 21-05-2003 à 10:12:05    

bobuse a écrit :

benou > c'est plutot taiche et -- qui ont repondu ;)


ha oui ...

Reply

Marsh Posté le 21-05-2003 à 11:02:57    

bobuse a écrit :


Ca s'apelle une classe anonyme, ca peut etre assez crade, mais ca peut etre aussi bougrement pratique ...


Typiquement les Adapter pour les interfaces graphiques ; t'as pas forcément envie de te taper une classe à part entière juste pour faire un System.exit(0) quand l'utilisateur ferme la fenêtre [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-05-2003 à 11:11:41    

Taiche a écrit :


Typiquement les Adapter pour les interfaces graphiques ; t'as pas forcément envie de te taper une classe à part entière juste pour faire un System.exit(0) quand l'utilisateur ferme la fenêtre [:ddr555]  


 
Ouais, ou à la limite, pour des FilenameFilter. Enfin, typiquement, quand il y a une seule méthode à redéfinir, courte, et qui est spécifique, ça peut être utile. J'vais déja entendu parler des classes anonymes, mais sans savoir vraiment ce que c'était.
Donc les classes anonymes, c'est ça, et uniquement ça ?

Reply

Marsh Posté le 21-05-2003 à 11:14:33    

El_gringo a écrit :


Ouais, ou à la limite, pour des FilenameFilter.


[:darklord]
Moi, le dernier FilenameFilter que j'ai fait, j'y ai foutu plein d'options et tout de façon à ce qu'il soit hyper générique et du coup j'le réutilise tout l'temps. Donc moyen pour une classe interne et carrément pas envisageable comme classe anonyme [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-05-2003 à 11:21:41    

Taiche a écrit :


[:darklord]
Moi, le dernier FilenameFilter que j'ai fait, j'y ai foutu plein d'options et tout de façon à ce qu'il soit hyper générique et du coup j'le réutilise tout l'temps. Donc moyen pour une classe interne et carrément pas envisageable comme classe anonyme [:ddr555]  


 
fais peter [:dawa]


---------------
get amaroK plugin
Reply

Marsh Posté le 21-05-2003 à 11:26:00    

bobuse a écrit :


fais peter [:dawa]


J'le mettrai en ligne ce soir, si ça t'intéresse.
Il est d'ailleurs pas forcément optimisé au niveau du code, donc si y a quelqu'un qui se sent d'attaque pour trouver les merdes et me foutre la gueule dedans, ça s'rait sympa [:dawa] Pis j'apprendrai des trucs, comme ça :o
L'idée c'est que le machin accepte les * et tu peux gérer l'accept des répertoires. J'en avais pas trouvé sur le Net qui me satisfasse, mais si ça s'trouve ça existe depuis [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-05-2003 à 11:42:34    

lol, moi ca me fait penser que je m'etais fais ch*** aussi pour faire un composant graphique, et puis il a été ajouté qques mois aprés dans swing (ticker) :/


Message édité par bobuse le 21-05-2003 à 11:43:13

---------------
get amaroK plugin
Reply

Marsh Posté le 21-05-2003 à 12:03:46    

bobuse a écrit :


benou > c'est plutot taiche et -- qui ont repondu ;)

j'allais le dire :o
 
benou[:tapai]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-05-2003 à 14:00:34    

Taiche a écrit :


[:darklord]
Moi, le dernier FilenameFilter que j'ai fait, j'y ai foutu plein d'options et tout de façon à ce qu'il soit hyper générique et du coup j'le réutilise tout l'temps. Donc moyen pour une classe interne et carrément pas envisageable comme classe anonyme [:ddr555]  


 
Ouais, j'sais pas!
De toute façon, il sera forcément moins générique que l'interface FilenameFilter :D
Il fait le filtrage par expressions régulières ton FilenameFilter ?

Reply

Marsh Posté le 21-05-2003 à 14:06:03    

El_gringo a écrit :


Ouais, j'sais pas!
De toute façon, il sera forcément moins générique que l'interface FilenameFilter :D
Il fait le filtrage par expressions régulières ton FilenameFilter ?


Bin j'voulais le faire mais fallait qu'il marche en 1.2 donc comme j'avais pas super envie de me retaper toute l'analyse du bordel, j'l'ai pas fait [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 21-05-2003 à 16:39:41    

El_gringo a écrit :


 
Ouais, ou à la limite, pour des FilenameFilter. Enfin, typiquement, quand il y a une seule méthode à redéfinir, courte, et qui est spécifique, ça peut être utile. J'vais déja entendu parler des classes anonymes, mais sans savoir vraiment ce que c'était.
Donc les classes anonymes, c'est ça, et uniquement ça ?


En plus de pas avoir de nom, elle est "inner", incluse dans une autre classe.  
Explication : toute instance de cette classe est liée à une (et une seule) instance de la classe qui l'enveloppe. Elle peut donc accéder à ce que l'instance de la classe enveloppante contient.
 
On est donc à 2 doigts des closures.
Une closure est un bout de codee qui peut accéder à l'ensemble de l'environnement où il est définit, tout en étant exécuté plus tard. Dans le cas ded java, l'environnement, c'est tout ce qui est statique (donc toujours accessible) et le contenu de l'instance courante et des instances "englobantes" pour les classes "inner".
 
Petite démo :  

Code :
  1. abstract public class Lazy {
  2.     public Object force() {
  3.         if (value == null)
  4.             value = expr();
  5.         return value;
  6.     }
  7.     public abstract Object expr();
  8.     private Object value;
  9. }


On a un bel outil (bon, pas typé, on verra ça dans la version 1.5 du langage) pour faire de la programmation fainéante.
 
 
 
une petite conversiont d'arbre acyclique en arbre possédant un pointeur sur le parent dans le style fonctionnel pour bien montrer la ressemblance avec http://forum.hardware.fr/forum2.ph [...] =1#t319874
 
un petit diagramme introductif :
http://nraynaud.com.free.fr/HFR/lazy.gif
 
Les LMachin sont les classes de l'abre de départ acyclique
Les Machin sont les classes de l'arbre d'arrivée avec pointeur sur les parents

Code :
  1. public class Test {
  2.     static Node convertNode(final Lazy parent, final LNode lnode) {
  3.         Lazy l = new Lazy(){
  4.             public Object expr() {return new Node(convertChild(this, lnode.child1), convertChild(this, lnode.child2), parent, lnode.val);}
  5.         };
  6.         return (Node)l.force();
  7.     }
  8. static Child convertChild(Lazy parent, LTree ltree) {
  9.         if (ltree instanceof LNode)
  10.             return convertNode(parent, (LNode) ltree);
  11.         else
  12.             return new Leaf(parent, ((LLeaf)ltree).val);
  13.     }
  14.     static Root convert(final LTree ltree) {
  15.         final Lazy l = new Lazy(){
  16.             public Object expr() {return new Root(convertChild(this, ltree));}
  17.         };
  18.  return (Root) l.force();
  19.     }
  20.     public static void main(String[] argv) {
  21.         LTree l = new LNode(new LLeaf(110), new LNode(new LLeaf(102), new LLeaf(103), 101), 2);
  22.  System.err.println(l);
  23.  System.err.println(convert(l));
  24.     }
  25. }


(code complet sur http://nraynaud.com/HFR )
Et voilà, un petit exemple de rapprochement entre 2 fonctionnalités assez distinctes.
 
Par contre, ATTENTION au mélange closures/effets de bord ! Les gens qui programment en O'caml le savent, en java faites gaffe (si vous avez la certitude d'avoir toujours accès à un objet de l'environnement, mais son état peut avoir changé depuis la définition de la closure et rendre le code de la closure plantageux).

Reply

Marsh Posté le 21-05-2003 à 17:37:06    

[:wam]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-05-2003 à 17:56:14    

Oui, bien sur, je suis entièrement d'accord ! :D

Reply

Marsh Posté le 21-05-2003 à 17:56:37    

t'as des articles sur ce sujet, paske la moi je pige pas tout ... mais ca a l'air interessant :)


---------------
get amaroK plugin
Reply

Marsh Posté le 21-05-2003 à 18:14:44    

bobuse a écrit :

t'as des articles sur ce sujet, paske la moi je pige pas tout ... mais ca a l'air interessant :)


java et lazy, non, je suis en train d'en écrire un.
je viens de trouver ça dans google :
http://www.javaworld.com/javaworld [...] tip67.html
 
les inner-class c'est dans la spec du langage (il doit y avoir des articles qui traînent aussi sur le net mais j'en ai jamais lu) : http://java.sun.com/docs/books/jls [...] tml#247506
 
Les concepts fainéans, des petites intros à des langages fainéans,
- le plus accessible, le module lazy de O'caml :
http://caml.inria.fr/ocaml/htmlman/libref/Lazy.html
- haskell :
http://www.haskell.org/tutorial/
- mercury :
http://www.cs.mu.oz.au/research/mercury/
 
 
Sur les closures et la lambda calcul, n'importe quelle doc sur un langage fonctionnel doit en parler.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed