Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1428 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12
Page Suivante
Auteur Sujet :

que pensez-vous des nouvelles spécification de java 1.5

n°524338
nraynaud
lol
Posté le 26-09-2003 à 22:08:01  profilanswer
 

Reprise du message précédent :
Autre nouveauté :
 
Meyer est en train de gagner (10 ans après ses préconisations), Les types de retour des fonctions deviennent covariants (c'est pas grand-chose, ils ne se sont pas mouillé).
 
 
petit exemple :
 

Code :
  1. class A {
  2.   public C myMethod();
  3. }
  4. class B extends A {
  5.   public D myMethod();
  6. }
  7. avec
  8. class D extends C {
  9. ...
  10. }


 
Ce qui permet de travailler "dans le détail", de typer plus finement les valeurs si on le souhaite.
 
C'est donc une petite modification qui participe à la solution finale concernant la race des ClassCastException.
 
 
Attention, aucune modification de ce type concerant les arguments des fonctions, qui serait incompatible avec la surcharge (et qui pose des petits problèmes de vérification sur lesquels des chercheurs bossent encore).

mood
Publicité
Posté le 26-09-2003 à 22:08:01  profilanswer
 

n°524345
noldor
Rockn'roll
Posté le 26-09-2003 à 22:26:12  profilanswer
 

nraynaud a écrit :

Autre nouveauté :
 
Meyer est en train de gagner (10 ans après ses préconisations), Les types de retour des fonctions deviennent covariants (c'est pas grand-chose, ils ne se sont pas mouillé).
 
 
petit exemple :
 

Code :
  1. class A {
  2.   public C myMethod();
  3. }
  4. class B extends A {
  5.   public D myMethod();
  6. }
  7. avec
  8. class D extends C {
  9. ...
  10. }


 
Ce qui permet de travailler "dans le détail", de typer plus finement les valeurs si on le souhaite.
 
C'est donc une petite modification qui participe à la solution finale concernant la race des ClassCastException.
 
 
Attention, aucune modification de ce type concerant les arguments des fonctions, qui serait incompatible avec la surcharge (et qui pose des petits problèmes de vérification sur lesquels des chercheurs bossent encore).

très intéressant
récemment, j'ai regretté qu'on ne puisse pas faire ça actuellement,  tout en pensant que c'était surement parce que ça posait des problèmes

n°524350
nraynaud
lol
Posté le 26-09-2003 à 22:53:28  profilanswer
 

noldor a écrit :

ça posait des problèmes

ça complexifie un peu la résolution des méthodes mais "en soit" c'est quasiment rien.
 
Dans le cas de java 1.5 c'est un peu plus compliqué à cause de la généricité. Mais les nouvelle erreurs sont assez logiques.

n°524351
benou
Posté le 26-09-2003 à 22:58:18  profilanswer
 

nraynaud a écrit :

Mais les nouvelle erreurs sont assez logiques.


 :heink:


---------------
ma vie, mon oeuvre - HomePlayer
n°524352
benou
Posté le 26-09-2003 à 23:00:12  profilanswer
 

nraynaud a écrit :

Les types de retour des fonctions deviennent covariants (c'est pas grand-chose, ils ne se sont pas mouillé).


très intéressant !!  :ouch:  
où tu as vu ca ? tu peux donner des liens ?
 
je suis étonné d'être passer à côté ... et surtout je crois me souvenir avoir entendu qu'il y aurait aucun changement à ce niveau dans la 1.5


---------------
ma vie, mon oeuvre - HomePlayer
n°524375
nraynaud
lol
Posté le 27-09-2003 à 00:20:14  profilanswer
 

draft pages 15-16
la petite subtilité avec :
http://java.sun.com/docs/books/jls [...] html#18428
 

Citation :

+If all the maximally specific methods have the same signature, then:
  ? If exactly one of the maximally specific methods is not declared abstract, it is the most specific method.
  ? Otherwise, if all the maximally specific methods are declared abstract, and all of the maximally specific methods have the same erasure, then the most specific method is chosen arbitrarily among the subset of the maximally specific methods that have the most specific return type. However, the most specific method is considered to throw a checked exception if and only if that exception is declared in the throws clauses of each of the maximally specific methods.
  ? Otherwise, the method invocation is is ambiguous, and a compile-time error occurs.
 
+Otherwise, we say that the method invocation is ambiguous, and a compile-time error occurs.


 
(la faute est dans le draft)


Message édité par nraynaud le 27-09-2003 à 01:36:31
n°524378
the real m​oins moins
Posté le 27-09-2003 à 00:25:44  profilanswer
 

benou a écrit :


franchement oui.  C'est reconnu par Sun comme étant la plus grande évolutions de Java depuis sa sortie.
 
Mon avis est que java 1.5 aurait mérité de s'appeler java 2 ...

3, vu que java2 c'est... euh je sais plus, la 1.2? :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°524382
benou
Posté le 27-09-2003 à 00:31:25  profilanswer
 

the real moins moins a écrit :

3, vu que java2 c'est... euh je sais plus, la 1.2? :)


je paralsi de java 2.0 :o


---------------
ma vie, mon oeuvre - HomePlayer
n°524384
benou
Posté le 27-09-2003 à 00:43:50  profilanswer
 

nraynaud a écrit :

draft pages 15-16
la petite subtilité avec :
http://java.sun.com/docs/books/jls [...] html#18428


là je te suis pas ....
 
où est ce que tu as vu qu'on pouvait surcharger une méthode avec un type de retour différent ?? J'ai lu les pages 15 et 16 et je vois aucune référence à ca :/


---------------
ma vie, mon oeuvre - HomePlayer
n°524396
nraynaud
lol
Posté le 27-09-2003 à 01:17:47  profilanswer
 

benou a écrit :


là je te suis pas ....
 
où est ce que tu as vu qu'on pouvait surcharger une méthode avec un type de retour différent ?? J'ai lu les pages 15 et 16 et je vois aucune référence à ca :/


 
pour la covariance, §3.2 ("Overriding" ) du draft (version 2.à, toujours, on oublie le vieux), pages 9-10. Exemple 10 page 10.
 
 
Ce que j'ai donné plus haut c'est la nouvelle sémantique statique des appels de fonctions.
Ma réponse c'était face à ce qui semblait du septicisme à propos du nouveau type d'erreur.
Y'a une petite référence à ça d'ailleur dans cette partie : "(...)the most specific method is chosen arbitrarily among the subset of the maximaly specific methods that have the most specific return type."

mood
Publicité
Posté le 27-09-2003 à 01:17:47  profilanswer
 

n°524466
benou
Posté le 27-09-2003 à 11:20:58  profilanswer
 

nraynaud a écrit :


pour la covariance, §3.2 ("Overriding" ) du draft (version 2.à, toujours, on oublie le vieux), pages 9-10. Exemple 10 page 10.
Y'a une petite référence à ça d'ailleur dans cette partie : "(...)the most specific method is chosen arbitrarily among the subset of the maximaly specific methods that have the most specific return type."


mais là ca a rien à voir avec l'héritage ... c'est juste la règle d'égibilité des méthode lors d'un appel. en gros, en cas d'égalité et qu'une méthode retourne Object et un autre String, c'est la méthode qui retourne String qui est choisie ...
 
je vais télécharger le draft 2.a. C'est le 2.0 que j'ai là ...


---------------
ma vie, mon oeuvre - HomePlayer
n°524469
benou
Posté le 27-09-2003 à 11:23:52  profilanswer
 

la 2.0 c'est la dernière ... je viens de la télécharger
 
et en effet, c'est le cas  [:wam]. J'aurais pas cru passer à côté d'un truc comme ca. merci :jap:
 

Citation :

This specification requires that the result type of a method is a subtype of the result types of all methods
it overrides. This is more general than previous specifications of the Java programming language, which
require the result types to be identical. See Section 6.2 for an implementation scheme to support this
generalization.
Example 10 The following declarations are legal according to the present specification, yet illegal according to the JLS.
class C implements Cloneable {
C copy() { return (C)clone(); }
...
}
class D extends C implements Cloneable {
D copy() { return (D)clone(); }
...
}


Message édité par benou le 27-09-2003 à 11:28:31

---------------
ma vie, mon oeuvre - HomePlayer
n°524579
the real m​oins moins
Posté le 27-09-2003 à 15:38:38  profilanswer
 

et concretement ça pourrait servir a quoi?
 
et si tu as un ref. sur un  B(qui etends A), mais déclaré comme A (A pouet = new B();), que tu appelles une methode étendue par B  
(pouet.myMethod()), qu'est-ce qui est retournée? une instance de C ou D? Logiquement, une instance de D, mais declarée comme C. Bref, je vois pas comment ça pourrait etre utilisé ..?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°524606
benou
Posté le 27-09-2003 à 16:19:27  profilanswer
 

the real moins moins a écrit :

Bref, je vois pas comment ça pourrait etre utilisé ..?


bha si !
 
prend l'exemple des Factory : souvent on fait un truc dans le genre :
 

Code :
  1. interface Service { public void doService(); }
  2. interface ServiceFactory { public Service getService(); }


 
et quand tu implémentes :

Code :
  1. interface ServiceA implements Service { public void doService() { ... } }
  2. interface ServiceAFactory implements ServiceFactory {
  3.    public Service getService() {
  4.       Service A a = new ServiceA();
  5.       // brol
  6.       return a;
  7.    }
  8. }


 
ca t'as jamais perturbé que la factory spécialisée retourne une instance globale (l'interface) plutot que de réellement indiquer le type de Service qui est retourné ?? Quand tu t'en sers via l'interface, pas de problème, mais quand tu accèdes directement à la factory et que ce que tu veux c'est récupérer un ServiceA, tu es obligé de faire un cast ce qui est très con.
 
là a priori, il deviendrait possible d'écrire ca :

Code :
  1. interface ServiceAFactory {
  2.    // ca retourne un ServiceA
  3.    public ServiceA getService() {
  4.       Service A a = new ServiceA();
  5.       // brol
  6.       return a;
  7.    }
  8. }


Ce qui est beaucoup plus logique, et qui continue à être valide avec l'interface de ServiceFactory : ce qui est retourné par la méthode getService est un Service.


Message édité par benou le 27-09-2003 à 18:49:16

---------------
ma vie, mon oeuvre - HomePlayer
n°524681
the real m​oins moins
Posté le 27-09-2003 à 18:43:49  profilanswer
 

ok :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[ Java ] Faire un navigateur web en java[Java] Librairies tierces supportant le HTML 4.0 ? [résolu en partie]
[JAVA][C#]Meilleur performance entre C# et Java ?[ java ] transfert de fichiers dans un socket
[Java] erreur sous IntelliJ IDEA, sous Jbuilder non...Applet JAVA dans du DHTML
Petite aide pour la réalisation d'un sniffer en JAVA[java] rafraichissement jframe + info optimisation [OK]
[ java ] ecouteur sur un repertoire[java] sortie dans un fichier excel?
Plus de sujets relatifs à : que pensez-vous des nouvelles spécification de java 1.5


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR