Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Plusieurs question de debutants.

8 réponses
Avatar
kevin2000
Bonjour,

Mon chef viens de m'obliger à oublier mon langage favorie,
pour me mettre au java. Je cherche donc a réconstituer mes
bibliothèques afin de porter mon travail avec un minimum
d'efforts.

Et je me demandais s'il existe un moyen simple d'instancier des objets
sans leurs créer une classe. En gros je cherche une syntaxe
équivalente à:

TYPE_ABSTRAIT mon_objet =
new ({
public int ma_fonction(){ return 1;
} :implements TYPE_ABSTRAIT)

Sinon comment faites vous quand vous voulez faire l'équivalent de passez
une fonction en paramètre d'une autre fonction?

J'ai aussi plusieurs fichier que j'aimerais bien pouvoir parser avec des
outils du genre Lex et Yacc que me conseiller vous comme implémentation
des ces outils ?

Où pourrais-je trouver une doc qui explique coment limité le nombre de
démarrage de la JVM sous linux? Sur le site de sun j'ai vu des documents
qui parlent d'outils suplémentaire à installer (java hotspot server)
mais je n'ai vu que les liens pour windows.

J'ai remarqué que les éléments de type énuméré de Java ne sont pas
parametrés (comme en OCaml) et ne peuvent pas non plus être convertis en
entier (comme en C). Quel utilisation avez vous de ce mécanisme. Je
n'est pas vus de livre dans la bibliotheque(et rapidement sur le net) de
mon service qui donne un seul cas réelle(non jouet) de leurs utilisations.

Le dernier point n'est pas vraiment une question. Quelqu'un voudrais
t-il me faire de ses retours d'expérience avec JAVA/QT et/ou JAVA/KDE ?



Merci beaucoup pour toutes vos réponses constructives.

Kévin.

8 réponses

Avatar
Laurent Bossavit
Kévin,

Et je me demandais s'il existe un moyen simple d'instancier des objets
sans leurs créer une classe.


Tu trouveras via la recherche Google: "anonymous inner classes"

Laurent
http://bossavit.com/

Avatar
kevin2000
Kévin,


Et je me demandais s'il existe un moyen simple d'instancier des objets
sans leurs créer une classe.



Tu trouveras via la recherche Google: "anonymous inner classes"

Merci, c'est exactement ce que je cherchais.



Kévin.


Avatar
kevin2000
Kévin,


Et je me demandais s'il existe un moyen simple d'instancier des objets
sans leurs créer une classe.



Tu trouveras via la recherche Google: "anonymous inner classes"

Merci, c'est exactement ce que je cherchais.



Kévin.


Avatar
Hervé AGNOUX
kevin2000 wrote:

Bonjour,

Mon chef viens de m'obliger à oublier mon langage favorie,
pour me mettre au java. Je cherche donc a réconstituer mes
bibliothèques afin de porter mon travail avec un minimum
d'efforts.



C'est bien, tu as un bon chef :-)


Et je me demandais s'il existe un moyen simple d'instancier des objets
sans leurs créer une classe. En gros je cherche une syntaxe
équivalente à:

TYPE_ABSTRAIT mon_objet > new ({
public int ma_fonction(){ return 1;
} :implements TYPE_ABSTRAIT)



Instancier des objets sans créer de classe, stricto sensu, c'est impossible
en java.

Il y aurait bien quelques possibilités, comme avec java.lang.reflect.Proxy.

Ce qui se rapprocherait le plus de ce que tu cherches est peut être le
java.beans.Statement, java.beans.Expression, ou java.beans.EventHandler.
Mais le meilleur service que l'on puisse te rendre au stade où tu en es est
de te dire de penser autrement. Tu n'arriveras qu'à un vaste bordel si ne
fais qu'utiliser ces biais.


Sinon comment faites vous quand vous voulez faire l'équivalent de passez
une fonction en paramètre d'une autre fonction?



Il faut passer en paramètre une interface.


J'ai aussi plusieurs fichier que j'aimerais bien pouvoir parser avec des
outils du genre Lex et Yacc que me conseiller vous comme implémentation
des ces outils ?



ANTLR
http://www.antlr.org/

Ou autres : http://java-source.net/open-source/parser-generators et
http://www.java-channel.org/query.jsp?cids=c_2198


Où pourrais-je trouver une doc qui explique coment limité le nombre de
démarrage de la JVM sous linux? Sur le site de sun j'ai vu des documents
qui parlent d'outils suplémentaire à installer (java hotspot server)
mais je n'ai vu que les liens pour windows.



Aucune idée. Pour ma culture personnelle, à quoi cela peut-il servir ?


J'ai remarqué que les éléments de type énuméré de Java ne sont pas
parametrés (comme en OCaml) et ne peuvent pas non plus être convertis en
entier (comme en C). Quel utilisation avez vous de ce mécanisme. Je
n'est pas vus de livre dans la bibliotheque(et rapidement sur le net) de
mon service qui donne un seul cas réelle(non jouet) de leurs utilisations.



Je ne sais pas ce que tu entends par "pas paramétrés". Pour moi ils sont
paramétrés, mais enfin... Peut être peux-tu aller voir :

"Enumerated Types"
http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html


Le dernier point n'est pas vraiment une question. Quelqu'un voudrais
t-il me faire de ses retours d'expérience avec JAVA/QT et/ou JAVA/KDE ?



Avec Java/QT j'en sais rien, mais avec Java/KDE cela fonctionne comme un
charme...


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
kevin2000
kevin2000 wrote:
C'est bien, tu as un bon chef :-)
La raison qu'il a invoqué ne m'a pas convaincu du tout.


Instancier des objets sans créer de classe, stricto sensu, c'est impossible
en java.
C'est pourtant ce que propose Laurent Bossavit, dans son pointeur.


J'ai aussi plusieurs fichier que j'aimerais bien pouvoir parser avec des
outils du genre Lex et Yacc que me conseiller vous comme implémentation
des ces outils ?

ANTLR

http://www.antlr.org/

Ou autres : http://java-source.net/open-source/parser-generators et
http://www.java-channel.org/query.jsp?cids=c_2198

Aucune idée. Pour ma culture personnelle, à quoi cela peut-il servir ?
Gagner 1 à 2 secondes a chaque démarage des programmes. L'une des

raisons pour le passage à java est l'existance de programme déja écire
en Java. Cepandant j'avais déja les mêmes en Ocaml (et ils étaient au
moins 1000 fois plus rapide). Et par construction de l'architechture qui
va autour de tout ces programmes(une architechture que je n'es pas
choisi), on est amener à faire de nombreux démarrage de la JVM.

Je ne sais pas ce que tu entends par "pas paramétrés". Pour moi ils sont
paramétrés, mais enfin... Peut être peux-tu aller voir :

"Enumerated Types"
http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html
Par nom parametré j'entend :

"Une valeur en paramêtre qui n'est pas définie à la compilation" et
"Une valeur en paramêtre qui peut être d'un type arbitrairement complexe"

Le dernier point n'est pas vraiment une question. Quelqu'un voudrais
t-il me faire de ses retours d'expérience avec JAVA/QT et/ou JAVA/KDE ?
Avec Java/QT j'en sais rien, mais avec Java/KDE cela fonctionne comme un

charme...
Pas de problèmes de classes "non encore implément" ?

Ou des trucs "interdits" car trop complexes à passer de JAVA à C++ ?



Kévin.


Avatar
Laurent Bossavit
Kévin,

Instancier des objets sans créer de classe, stricto sensu, c'est impossible
en java.


C'est pourtant ce que propose Laurent Bossavit, dans son pointeur.


Oui et non. "Dans les coulisses", Java créée une classe "standard" pour
chacune de tes classes dites anonymes.

A+


Avatar
serval
J'ai remarqué que les éléments de type énuméré de Java ne sont pas
parametrés (comme en OCaml) et ne peuvent pas non plus être convertis en
entier (comme en C).
Concernant ce point précis, tu ne peux pas faire d'énumération d'entiers.

Par contre, tu peux faire des énumérations d'objets Integer.
ex :
// création d'une énumération de type List
List objList = new ArrayList();

// création des objets qui vont contenir tes entiers
Integer objInt1 = new Integer(1);
Integer objInt2 = new Integer(2);

// ajout des objets à ton énumération
objList.add(objInt1);
objList.add(objInt2);

// ex de récupération de l'entier du premier objet de l'énumération
int nEntier = objList.get(1).intValue();

Il existe une syntaxe moins lourde avec Java 1.5 mais derrière c'est
toujours le même principe je crois.

Je ne pense pas que Java soit fait pour manipuler des énumérations
d'entiers.

La seule chose que tu puisses faire c'est créer un tableau (donc qch de
statique) d'entiers. Dès que tu arrives à la limite de ton tableau, tu
crées un tableau 2 fois plus grand et tu copies, etc... Je te l'accorde,
c'est lourd et pas très efficace.

Le truc plus intéressant dans ton cas serait peut-être d'utiliser JNI,
c'est qch que je connais très mal mais qui permet d'appeler des
programmes écrits dans un langage différent de Java.

Avatar
fabrice-pas-despame.bacchella
On Wed, 22 Feb 2006 10:11:53 +0100, kevin2000
wrote:

kevin2000 wrote:
C'est bien, tu as un bon chef :-)
La raison qu'il a invoqué ne m'a pas convaincu du tout.



C'est normal, parce que vu que tu parle de Ocaml, je pense qu'il ne
pouvait pas te donner la vrai raison. En fait, le message subliminal,
c'est qu'il en a marre de dépendre de toi & qu'il aimerait pouvoir te
remplacer par un développeur moins cher. Ou en tout cas, de ne plus
être obligé de dire oui à chaque fois que tu demande une augmentation
de salaire.


Gagner 1 à 2 secondes a chaque démarage des programmes. L'une des
raisons pour le passage à java est l'existance de programme déja écire
en Java. Cepandant j'avais déja les mêmes en Ocaml (et ils étaient au
moins 1000 fois plus rapide). Et par construction de l'architechture qui
va autour de tout ces programmes(une architechture que je n'es pas
choisi), on est amener à faire de nombreux démarrage de la JVM.


Là, y a un problème de fond qui ne réside pas dans le choix du
langage, mais un mauvaise usage. 1000 fois plus rapide, ça ne rime à
rien. Une telle différence ne peut provenir que d'une mauvaise
implémentation ou un mauvais usage. Par exemple le démarrage de
nombreuses JVM. Un démarrage d'une machine virtuelle, c'est assez
lourd, vous ne pouvez pas profiter des mécanismes de compilation en
tache de fond. Il faut vraiment revoir l'archi si vous changez de
langage dans ta boite.