[java] fucking final classe

fucking final classe [java] - Programmation

Marsh Posté le 18-02-2002 à 17:59:56    

Fait chier : je viens de voir que la class java.lang.String est finale : pas moyen de faire une classe qui l'étend.  
 
Pkoi ils ont fait ca ??? c'est super chiant !
doit y avoir une raison à laquelle je pense pas. Vous avez une idée ?


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

Marsh Posté le 18-02-2002 à 17:59:56   

Reply

Marsh Posté le 18-02-2002 à 18:17:46    

question de sécurité je suppose


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 18-02-2002 à 18:20:00    

darklord22 a écrit a écrit :

question de sécurité je suppose  




de sécurité ?? quel rapport ??


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

Marsh Posté le 18-02-2002 à 18:39:59    

peut-etre est-elle consideree
comme un type natif par la JVM..
 
LEGREG

Reply

Marsh Posté le 18-02-2002 à 18:43:57    

legreg a écrit a écrit :

peut-etre est-elle consideree
comme un type natif par la JVM..




je trouve que c'est une sacré limitation pour le langage ! C'est vraiment dommage d'avoir fait ca !


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

Marsh Posté le 18-02-2002 à 18:59:24    

ca a des avantages:
traitement probablement plus rapide
possibilite d'avoir une surcharge
des operateurs = et +:
assignation: String machaine = "toto";
concatenation:
String machaine3 = machaine1 + machaine2;
 
Bon ca a des contraintes comme le fait
que les chaines sont immuables (on fait des
operations sur des chaines mais on ne modifie
pas des chaines qui ont une representation
constante en memoire).
 
Je pense que tu devrais regarder du cote
de StringBuffer.
 
A+
LEGREG

Reply

Marsh Posté le 18-02-2002 à 19:26:31    

mais ils auraient pu laisser la classe héritable en gardant les même avantages : il suffisait de mettre les attribut en private : la classe héritante n'aurait accès qu'au méthodes publiques et n'aurait donc pas pu modifier la valeur de la String ... mais juste étendre ses possibilités (nouveau constructeurs, etc ...)


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

Marsh Posté le 18-02-2002 à 19:29:54    

J'pense de mon côté qu'ils voulaient en faire une sorte de type primitif. Un peu comme un int : ça se manipule bien, c'est simple et immuable. Un type très stable en somme, sans que n'importe quel petit malin arrive avec ses gros sabots et propose sa String perso.


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

Marsh Posté le 18-02-2002 à 19:34:12    

:gun: ca va à l'encontre de la pensée objet !!!!!


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

Marsh Posté le 18-02-2002 à 20:15:22    

Bill Gates aussi. Et pourtant, pourtant !


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

Marsh Posté le 18-02-2002 à 20:15:22   

Reply

Marsh Posté le 18-02-2002 à 20:54:35    

sauf que là c'est sun qui a fait le langage. C'est eux qui ont fait ce choix. Ils doivent avoir une bonne raison !


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

Marsh Posté le 18-02-2002 à 20:58:42    

as tu regarde stringbuffer?
C'est une string mais mutable.
 
LEGREG

Reply

Marsh Posté le 18-02-2002 à 21:21:56    

oui je connais les StringBuffer. (quand même ;))
Mais mon but c'est pas de modifier la valeur d'une chaine de caractère ...
je veux connaître la raison de ce choix qui me parait absurde !


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

Marsh Posté le 18-02-2002 à 21:35:22    

Des raisons de performance sans doute.
http://www.usenix.org/publications [...] jperf.html

Reply

Marsh Posté le 18-02-2002 à 21:39:26    

merci pour le lien très intéressant !
Tu as surement raison, ca doit être la raison ...
mais c'est quand même bien dommage !!! :(


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

Marsh Posté le 19-02-2002 à 00:28:20    

on peut contourner le fait qu'une classe soit finale en l'encapsulant dans une autre, malheureusement impossible d'utiliser une instance de cette nouvelle classe avec le type de l'ancienne, ce qui limite énormément l'intérêt de la manip finalement ... :(

Reply

Marsh Posté le 19-02-2002 à 00:30:53    

c_po_ma_faute a écrit a écrit :

on peut contourner le fait qu'une classe soit finale en l'encapsulant dans une autre, malheureusement impossible d'utiliser une instance de cette nouvelle classe avec le type de l'ancienne, ce qui limite énormément l'intérêt de la manip finalement ... :(  




ben oui. le but c'est d'utiliser le polymorphisme, sinon ca pert tout son intérêt ...


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

Marsh Posté le 19-02-2002 à 01:51:19    

le polymorphisme sur un type immuable
pourquoi cela?
(vraie question:
je n'ai surement pas saisi la moitie de ton  
probleme)
 
A+
LEGREG

Reply

Marsh Posté le 19-02-2002 à 08:40:47    

et bien tu pourrais utiliser cette sous-classes de String de la même façon qu'une String...
 
immaginons une sous-classe UpperString qui représente une chaine de caractère toujours en majuscule. On pourrait utiliser cette classe partout où String est utilisé actuellement... là ce n'est pas possible.


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

Sujets relatifs:

Leave a Replay

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