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

  FORUM HardWare.fr
  Programmation
  Java

  typage statique suxor

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

typage statique suxor

n°225714
lorill
Posté le 09-10-2002 à 16:26:31  profilanswer
 

Long toto = new Long("434" );
System.out.println(toto); //ok
System.out.println( (toto!=null) ? "" : toto.toString()); //ok
System.out.println( (toto!=null) ? "" : toto); //blam


Message édité par lorill le 09-10-2002 à 16:43:26
mood
Publicité
Posté le 09-10-2002 à 16:26:31  profilanswer
 

n°225721
lorill
Posté le 09-10-2002 à 16:30:25  profilanswer
 

euh ?

n°225723
kadreg
profil: Utilisateur
Posté le 09-10-2002 à 16:31:07  profilanswer
 

coin


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°225724
--greg--
Posté le 09-10-2002 à 16:31:50  profilanswer
 

:ange:  
 
 
Long n'est pas castable en String
Or c'est ce qui se passe quand tu fais ()?:  je présume...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225725
lorill
Posté le 09-10-2002 à 16:31:51  profilanswer
 

GREG ! REMETS TON MESSAGE TOUT DE SUITE !
 
c'est vrai quoi, de quoi j'ai l'air maintenant :(

n°225726
--greg--
Posté le 09-10-2002 à 16:32:14  profilanswer
 

lorill a écrit a écrit :

GREG ! REMETS TON MESSAGE TOUT DE SUITE !
 
c'est vrai quoi, de quoi j'ai l'air maintenant :(



ben voila il est là :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225727
veryfree
Posté le 09-10-2002 à 16:33:04  profilanswer
 

lorill a écrit a écrit :

GREG ! REMETS TON MESSAGE TOUT DE SUITE !
 
c'est vrai quoi, de quoi j'ai l'air maintenant :(




 
j etait sur qu il avait repondu !!!
 
greg c pas bien d effacer tes messages  :o

n°225728
darklord
You're welcome
Posté le 09-10-2002 à 16:33:43  profilanswer
 

il fait ca tout le temps qd il raconte des bêtises


---------------
Just because you feel good does not make you right
n°225729
lorill
Posté le 09-10-2002 à 16:33:49  profilanswer
 

--greg-- a écrit a écrit :

 :ange:  
Long n'est pas castable en String
Or c'est ce qui se passe quand tu fais ()?:  je présume...




 
?: n'a pas a caster quoi que ce soit :??:

n°225731
lorill
Posté le 09-10-2002 à 16:34:48  profilanswer
 

Et pourtant  
System.out.println( (toto!=null) ? new Long(0) : toto); //ok
 
crotte. Pourquoi ?: demande que les deux opérandes soient du même type ?

mood
Publicité
Posté le 09-10-2002 à 16:34:48  profilanswer
 

n°225734
kadreg
profil: Utilisateur
Posté le 09-10-2002 à 16:38:28  profilanswer
 

lorill a écrit a écrit :

 Pourquoi ?: demande que les deux opérandes soient du même type ?




 
Parceque


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°225735
--greg--
Posté le 09-10-2002 à 16:38:30  profilanswer
 

lorill a écrit a écrit :

Et pourtant  
System.out.println( (toto!=null) ? new Long(0) : toto); //ok
 
crotte. Pourquoi ?: demande que les deux opérandes soient du même type ?



ben euh c logique nan?  
 
MaClasseDeMonCul monInstance = (a==b) new String("pouet" ) : new InputStream("tralala" );
 
tu voudrais que ça marche ça? :/


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225736
kadreg
profil: Utilisateur
Posté le 09-10-2002 à 16:39:18  profilanswer
 

--greg-- a écrit a écrit :

 
tu voudrais que ça marche ça? :/




 
Oui (smalltalk p0w4h)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°225738
--greg--
Posté le 09-10-2002 à 16:41:33  profilanswer
 

kadreg a écrit a écrit :

 
 
Oui (smalltalk p0w4h)




euh ...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225739
lorill
Posté le 09-10-2002 à 16:41:50  profilanswer
 

--greg-- a écrit a écrit :

ben euh c logique nan?  
 
MaClasseDeMonCul monInstance = (a==b) new String("pouet" ) : new InputStream("tralala" );
 
tu voudrais que ça marche ça? :/




 
Oui. Je trouves ca aberrant que ca ne marche pas, même apres avoir lu la spec. http://java.sun.com/docs/books/jls [...] tml#290293

n°225740
--greg--
Posté le 09-10-2002 à 16:42:47  profilanswer
 

lorill a écrit a écrit :

 
 
Oui. Je trouves ca aberrant que ca ne marche pas, même apres avoir lu la spec. http://java.sun.com/docs/books/jls [...] tml#290293



euh et à quoi va ressembler l'instance de la ClasseDeTonCul comme ça :heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225743
--greg--
Posté le 09-10-2002 à 16:44:14  profilanswer
 

Citation :

uses the boolean value of one expression to decide which of two other expressions should be evaluated


 
EVALUER.
le pb ne se situe pas au niveau de l'expression elle mais au moment ou tu veux assigner une instance de Long à une variable de type String par exempe
String s = new Long("334" )
ça marchera jamais ça hein...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225749
lorill
Posté le 09-10-2002 à 16:48:26  profilanswer
 

--greg-- a écrit a écrit :

euh et à quoi va ressembler l'instance de la ClasseDeTonCul comme ça :heink:




Code :
  1. class UneDate extends java.util.Date
  2. {
  3. }
  4. class AutreDate extends java.util.Date
  5. {
  6. }
  7. Date d = (pika == null) ? new UneDate() : new AutreDate();


 
ben la je vois pas comment tu justifies le fait que ce soit illégal.

n°225752
lorill
Posté le 09-10-2002 à 16:49:02  profilanswer
 

--greg-- a écrit a écrit :

Citation :

uses the boolean value of one expression to decide which of two other expressions should be evaluated


 
EVALUER.
le pb ne se situe pas au niveau de l'expression elle mais au moment ou tu veux assigner une instance de Long à une variable de type String par exempe
String s = new Long("334" )
ça marchera jamais ça hein...




 
celui la tu l'effaceras pas :)

n°225757
--greg--
Posté le 09-10-2002 à 16:53:39  profilanswer
 

lorill a écrit a écrit :

 

Code :
  1. class UneDate extends java.util.Date
  2. {
  3. }
  4. class AutreDate extends java.util.Date
  5. {
  6. }
  7. Date d = (pika == null) ? new UneDate() : new AutreDate();


 
ben la je vois pas comment tu justifies le fait que ce soit illégal.



là je suis d'accord :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225761
--greg--
Posté le 09-10-2002 à 16:54:34  profilanswer
 

lorill a écrit a écrit :

 
 
celui la tu l'effaceras pas :)



et? j'ai dit une connerie?
Dans ton cas tu voulais assigner un Long(toto) ou une String("" ) sur à une meme variable je te rappelle :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225764
BifaceMcLe​OD
The HighGlandeur
Posté le 09-10-2002 à 16:56:27  profilanswer
 

lorill a écrit a écrit :

Et pourtant  
System.out.println( (toto!=null) ? new Long(0) : toto); //ok
 
crotte. Pourquoi ?: demande que les deux opérandes soient du même type ?




En C++ c'est la même chose.
L'opérateur ternaire ? : doit renvoyer un objet d'un type bien défini. Or si tu écris toto != null ? "" : toto, ça renvoit quoi comme type ? Object ? Ca serait bizarre...
 
De toute manière, tu as rarement besoin d'avoir 2 objets de type différents de chaque côté du ":". Et si c'est cela que tu veux, le compilateur t'impose juste de lui dire que c'est effectivement cela que tu veux : toto != null ? (Object) "" : (Object) toto.
 
Le typage fort, ça permet juste une vérification automatisée de la cohérence d'une ligne de code, histoire de ne pas pouvoir ajouter des carottes à des bananes. Et désolé, mais on n'a pas trouvé beaucoup mieux pour limiter le nombre de bugs dans un programme...

n°225765
lorill
Posté le 09-10-2002 à 16:56:43  profilanswer
 

Citation :

et? j'ai dit une connerie?


T'as surtout été a coté de la plaque
 

Citation :

Dans ton cas tu voulais assigner un Long(toto) ou une String("" ) sur à une meme variable je te rappelle :o


oui, a une variable de type Object. Quel crime !


Message édité par lorill le 09-10-2002 à 16:57:35
n°225768
--greg--
Posté le 09-10-2002 à 17:00:29  profilanswer
 

lorill a écrit a écrit :

Citation :

et? j'ai dit une connerie?


T'as surtout été a coté de la plaque
 

Citation :

Dans ton cas tu voulais assigner un Long(toto) ou une String("" ) sur à une meme variable je te rappelle :o


oui, a une variable de type Object. Quel crime !



 [:biscuiteur] :fou:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°225770
lorill
Posté le 09-10-2002 à 17:01:31  profilanswer
 

BifaceMcLeOD a écrit a écrit :

 
Le typage fort, ça permet juste une vérification automatisée de la cohérence d'une ligne de code, histoire de ne pas pouvoir ajouter des carottes à des bananes.  




 
Typage fort différent de statique :
C - typage faible et statique
Java, C++ - typage fort et statique
Python, Ruby - typage fort et dynamique.
 
Bon, je pense que tu le sais très bien, mais bon.

n°225774
BifaceMcLe​OD
The HighGlandeur
Posté le 09-10-2002 à 17:10:01  profilanswer
 

Oui, mais le typage statique permet une exécution nettement plus rapide.
Ceci dit, Java offre aussi le support du typage dynamique, avec la Reflection API.
 
Note : on pourrait aussi ajouter "Ada" dans les langages à typage archi-fort statique, et "SmallTalk" dans les langages à typage fort et dynamique.


Message édité par BifaceMcLeOD le 09-10-2002 à 17:11:31
n°225960
benou
Posté le 09-10-2002 à 23:29:00  profilanswer
 

lorill a écrit a écrit :

 

Code :
  1. class UneDate extends java.util.Date
  2. {
  3. }
  4. class AutreDate extends java.util.Date
  5. {
  6. }
  7. Date d = (pika == null) ? new UneDate() : new AutreDate();


 
ben la je vois pas comment tu justifies le fait que ce soit illégal.




nop. C'est logic aussi que ca marche pas : UneDate ne peux pas être converti en AutreDate et inversement. C'est donc tout a fait en cohérence avec la doc java :  

Citation :

If the second and third operands are of different reference types, then it must be possible to convert one of the types to the other type (call this latter type T) by assignment conversion (§5.2); the type of the conditional expression is T. It is a compile-time error if neither type is assignment compatible with the other type.  


 
Le problème c'est que le compilo cherche à déterminer le type de l'expression "a?b:c". Il ne tient pas compte de ce que tu vas en faire (en l'occurence, l'assigner une variable de type compatible avec b et c). par contre, tu peux faire ca :  
 

Code :
  1. Date d = (pika == null) ? (Date) new UneDate() : (Date)new AutreDate();

n°225999
lorill
Posté le 10-10-2002 à 07:22:01  profilanswer
 

j'ai bien compris ce que ca faisait, mais ca me surprend comme comportement. Mais en fait c'est logique, il est obligé de faire comme ca pour vérifier la validité du type a la compilation.

n°226007
benou
Posté le 10-10-2002 à 09:19:59  profilanswer
 

lorill a écrit a écrit :

j'ai bien compris ce que ca faisait, mais ca me surprend comme comportement. Mais en fait c'est logique, il est obligé de faire comme ca pour vérifier la validité du type a la compilation.




ouep  :jap:

n°226109
--greg--
Posté le 10-10-2002 à 11:50:59  profilanswer
 

:kaola:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226111
lorill
Posté le 10-10-2002 à 11:58:57  profilanswer
 

--greg-- a écrit a écrit :

 :kaola:  




Qu'est-ce qu'il t'arrive encore ? C'est pas parce que je comprends que j'approuve  :o

n°226118
--greg--
Posté le 10-10-2002 à 12:14:06  profilanswer
 

lorill a écrit a écrit :

 
Qu'est-ce qu'il t'arrive encore ? C'est pas parce que je comprends que j'approuve  :o  



:heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°226119
lorill
Posté le 10-10-2002 à 12:15:51  profilanswer
 

:na:

n°226128
darklord
You're welcome
Posté le 10-10-2002 à 12:35:41  profilanswer
 

[:cupra]


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  typage statique suxor

 

Sujets relatifs
Ajouter une librairie statique dans un projet C/C++ dans Kylixtypage de langage
[C++] classe statiqueHTML : Image de fond statique
HTML : Image de fond statique 
Plus de sujets relatifs à : typage statique suxor


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