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



Quel est l'équivalent Java des pointeurs sur fonctions C/C++ ?
auteur : Clément Cunin
En Java il n'existe pas de pointeurs sur méthodes, il faut utiliser un objet là où en C/C++ vous utilisiez une fonction.

1<sup>ère</sup> étape : définiton d'une interface
On utilise des objets implémentant une interface commune. Cette interface devra définir le prototype de la fonction à exécuter.

public interface IFonctionpublic void execute(int);
2<sup>ème</sup> étape : définiton de classes implémentant l'interface
Ces classes définissent différentes implémentations de la fonction.

public class Fonction implements IFonctionpublic void execute(int arg)<comment>Faire ce que l'on aurait fait dans la fonctionen C/C++</comment>
3<sup>ème</sup> étape : passage de paramètres et exécution
Il ne reste plus qu'à définir une fonction qui prend en paramètre une instance du type de l'interface et de faire appel à la méthode définie dans cette interface.

public void fonction(IFonction uneFonction)uneFonction.execute(unint);
Un bel exemple d'une telle méthodologie est le système de callback de AWT, au lieu de passer des fonctions comme en C/C++, on passe des instances de classes appelées Listener.


Peut-on surcharger les opérateurs comme en C++ ?
auteur : Clément Cunin
NON.
Cela fait partie des spécifications du langage. Les concepteurs de Java n'ont pas souhaité intégrer cette fonctionnalité car le code qui découle de telles pratiques est beaucoup plus difficile à lire et à comprendre.


Comment faire pour hériter de plusieurs classes ?
auteur : Clément Cunin
L'héritage multiple n'est pas possible en Java. C'est l'une des propriétés fondamentales du langage, et c'est un point qui le différencie de beaucoup d'autres langages objets. Ce choix a été fait pour éviter que les nombreux problèmes lié à l'héritage en 'diamant' (une classe qui hérite de 2 parents qui héritent d'une classe commune !) ne se pose en Java.

Oui, mais comment faire alors ?
Afin de contourner le problème, Java introduit la notion d'interface. Une interface est une classe privée de toute implémentation. Il devient alors possible de dériver d'une classe et d'en implémenter plusieurs autres. Cette solution permet de contourner très élégamment les problèmes liés à l'héritage multiple.


Existe-t-il des templates en Java ?
Non, pas pour l'instant. Cependant Sun étudie, dans le cadre d'un processus communautaire ( community process ), l'intégration d'un mécanisme de généricité à Java.

Les templates seront ajoutés à Java dans sa version 1.5, pour plus d'info http://developer.java.sun.com/developer/technicalArticles/releases/generics/

.

lien :  http://developer.java.sun.com/developer/technicalArticles/releases/generics/


Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.