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

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]Plein de questions de débutant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]Plein de questions de débutant

n°376956
HelloWorld
Salut tout le monde!
Posté le 29-04-2003 à 18:26:54  profilanswer
 

Salut.
Donc je me suis mis au JAVA ce week end, et j'ai quelques coquilles.
Je viens de C++, et je suis surpris du comportement de protected/private en JAVA.
 

Code :
  1. public class Test
  2. {
  3.     protected static int CONSTANTE = 10;
  4. }
  5. public class Test2
  6. {
  7.     public static void main( String[] args )
  8.     {
  9.         Test.CONSTANTE = 20;
  10.     }
  11. }


 
Pourquoi ce code passe-t-il ?
 
De même, j'ai eu une erreur "de déréférencement d'int" lorsque je l'initialisais avec une constante final. Il a fallu que je caste la constante en (int) ... (désolé, j'ai plus le source sous les yeux et j'arrive pas à le refaire).
 
Autre question : si ma classe Classe2 utilise Classe1.
Si je modifie Classe1, ke je la recompile, dois-je recompiler Classe2 ?
 

Code :
  1. import java.net.*;
  2. public class Test extends DatagramSocket
  3. {
  4. }


 
j'ai droit à l'erreur :
"unreported exception java.net.SocketException; must be caught or declared to be thrown"
 
j'ai essayé de jouer avec trows et tout ca, mais j'ai pas trouvé ce qu'il faut faire.
Et même, je ne comprend pas trop l'erreur. Quand on hérite de Thread, on n'a pas à s'embêter avec les exceptions que cette classe génère. Pourquoi là il le faut ?
Et comment faire dans un bloc catch pour relancer une exception au lieu de faire System.err.println(e); ?
 
Enfin, j'ai droit au message  
"Note: UdpConnexion.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details."
 
D'après ce que j'ai compris, j'utilise des fonctions dont il est déconseillé de se servir.
Des fois -deprecation ne m'affiche rien.
Et sinon, je sais pas comment faire sauter ce message.
Par exemple :

Code :
  1. byte [] data = new byte [ Str.length() ];
  2. Str.getBytes( 0, Str.length(), data, 0 );


il est dit dans la doc d'utiliser data = Str.getBytes();
Oui mais cette version effectue un encodage bizarre qui me ralonge mon data. Or je veux que mon data soit de la taille de Str.
Comment faire ?
 
Merci à vous.


Message édité par HelloWorld le 18-05-2003 à 16:27:30

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 29-04-2003 à 18:26:54  profilanswer
 

n°378198
HelloWorld
Salut tout le monde!
Posté le 30-04-2003 à 14:08:07  profilanswer
 

:up:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°380680
HelloWorld
Salut tout le monde!
Posté le 02-05-2003 à 18:02:26  profilanswer
 

:cry:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°380738
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-05-2003 à 18:55:54  profilanswer
 

Je connais à peine Java :/
Mais t'es sur que le code avec le protected passe ? Si c'est le cas, c'est assez space comme truc  :heink:  
Et si tu met private à la place de protected, ça donne quoi ? :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°380760
R3g
fonctionnaire certifié ITIL
Posté le 02-05-2003 à 19:08:38  profilanswer
 

HelloWorld a écrit :


Code :
  1. public class Test
  2. {
  3.     protected static int CONSTANTE = 10;
  4. }
  5. public class Test2
  6. {
  7.     public static void main( String[] args )
  8.     {
  9.         Test.CONSTANTE = 20;
  10.     }
  11. }


 
Pourquoi ce code passe-t-il ?


 
La franchement je sais pas, ca semble quand même bizarre que ca passe.
 

Citation :


De même, j'ai eu une erreur "de déréférencement d'int" lorsque je l'initialisais avec une constante final. Il a fallu que je caste la constante en (int) ... (désolé, j'ai plus le source sous les yeux et j'arrive pas à le refaire).


 
Je vois pas de quoi tu parles (oui je sais je sers à rien)
 

Citation :

Autre question : si ma classe Classe2 utilise Classe1.
Si je modifie Classe1, ke je la recompile, dois-je recompiler Classe2 ?


 
Non. Ca marchera toujours, à moins que tu aie modifié la déclaration des méthodes de Classe1 utilisées par Classe2
 

Citation :


Code :
  1. import java.net.*;
  2. public class Test extends DatagramSocket
  3. {
  4. }


 
j'ai droit à l'erreur :
"unreported exception java.net.SocketException; must be caught or declared to be thrown"


 
Ca veut juste dire que le compilo veut pas que tu laisse la possibilité qu'une exception parte dans la nature. Ca veut dire que dans toutes les méthodes où une telle exception peut partir, tu dois soit la catcher, soit déclarer que ta méthode la fait remonter (throws SocketException)
 

Citation :

Et comment faire dans un bloc catch pour relancer une exception au lieu de faire System.err.println(e); ?


throw e;
 

Citation :


Enfin, j'ai droit au message  
"Note: UdpConnexion.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details."
 
D'après ce que j'ai compris, j'utilise des fonctions dont il est déconseillé de se servir.
Des fois -deprecation ne m'affiche rien.
Et sinon, je sais pas comment faire sauter ce message.
Par exemple :

Code :
  1. byte [] data = new byte [ Str.length() ];
  2. Str.getBytes( 0, Str.length(), data, 0 );


il est dit dans la doc d'utiliser data = Str.getBytes();
Oui mais cette version effectue un encodage bizarre qui me ralonge mon data. Or je veux que mon data soit de la taille de Str.
Comment faire ?


Les APIs deprecated sont des methodes qui ont été declarées obsolètes. Regarde dans la doc de l'API ce qu'il est conseillé d'utiliser à la place. Les APIs deprecated marchent, mais en général elles posent des problèmes. Pour ton cas spécifique, je ne peux pas t'aider.
 

Citation :

Merci à vous.


De rien :hello:

n°380766
R3g
fonctionnaire certifié ITIL
Posté le 02-05-2003 à 19:11:28  profilanswer
 

Et mets ton post dans la subcat Java, tu auras plus de réponses ;)

n°398538
HelloWorld
Salut tout le monde!
Posté le 18-05-2003 à 16:40:42  profilanswer
 

Bon, du temps s'est écoulé, reprenons.
L'histoire du protected static, je viens de retester car moi meme j'ai douté à la relecture de mon post ... et ca passe.
 
Fichier Test.java

Code :
  1. public class Test
  2. {
  3.     protected static int CONSTANTE = 10;
  4. }


 
Fichier Test2.java

Code :
  1. public class Test2
  2. {
  3.     public static void main( String[] args )
  4.     {
  5.         Test.CONSTANTE = 20;
  6.     }
  7. }


 
Le tout dans le meme repertoire.
javac -classpath . Test.java
javac -classpath . Test2.java
java -classpath . Test2
 
tout se passe bien ...[:anne-sophie]
Or y'a 2 bonnes raisons que ca fouarre : le final, et le protected.
 
L'histoire du castage en int d'un static final int, je n'ai pas su le reproduire.
C'est assez bizarre quand meme je trouve java. Un source compile ici, pas la ... ca semble etre du a differentes versions ...
Donc pour cette histoire (ici, j'ai remis le final et viré le cast, et ca marche là ou avant ailleurs ca marchait pas), j'avais une constante static final int CONSTANTE. Et quand, au sein meme de la classe ou elle etait declarée, je voulais l'utiliser pour faire par exemple :
int a = CONSTANTE;
il gueulait, pas content, obligé de faire :
int a = (int)CONSTANTE.
je me souviens plus de l'erreur. Mais bon ca, apparement, ca le fait plus, je sais pas trop d'ou ca sortait.
 
Sinon merci pour ton aide R3g, j'ai un peu mieux capté pourquoi des fois il fallait catcher des exceptions et des fois non.
Cette histoire de protected final, ca me laisse perplexe quand meme.
Quelqu'un d'autre peut tester vite fait pour voir si c'est moi qui dit n'imp ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°398549
kadreg
profil: Utilisateur
Posté le 18-05-2003 à 16:48:22  profilanswer
 

OUI, C'EST NORMAL
 
C'est assez peu connu, mais il y a 4 visibilités en java.  
 
Pour le public et le private sont clair, je passe.
 
Le protected est différent du C++, puisqu'il permet l'accès de l'élément aux classes filles, mais aussi au classes du même package, ce qui est le cas ici.
 
La 4eme visibilité, friendly (qui est celle lorsque l'on ne précise pas de visibilité) rend un élément visible aux classes du package, et pas aux classes externes du package.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°398558
HelloWorld
Salut tout le monde!
Posté le 18-05-2003 à 16:57:32  profilanswer
 

Ok tout s'éclairci.
J'ai appris le Java à partir d'un ou 2 sites "from C++ to Java" et ils disaient "private, protected are the same as in C++".
Ok pour ca donc.
Et une idée pour mon autre post sur TCP et READ ?
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°406719
omega2
Posté le 24-05-2003 à 01:10:53  profilanswer
 

HelloWorld a écrit :

Le tout dans le meme repertoire.
javac -classpath . Test.java
javac -classpath . Test2.java
java -classpath . Test2
 

Je me demandais justement comment on transformait du code java en javabyte. Je crois bien que je viens de trouver. :)
Comme quoi, on trouve parfois sans poser la question. ;)
Merci de cette info que tu m'as donner avant que je la demande. :D (lol)


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

  [JAVA]Plein de questions de débutant

 

Sujets relatifs
debutant : compile sous borland mais pas gccdemande aide surr une question tres precise en java(servlet)
Executer une commande en JAVA[débutant] Delphi ... structure if ..then
obtenir un .exe ou similaire en java ???Comment executer des commandes dos ou java ?
java aide,question facile[edit] aide java (comment inserer une image dans une fenetre ??)
[Delphi] vidéo en plein écranMais où est le problème ?? Sql/Java [RESOLU]
Plus de sujets relatifs à : [JAVA]Plein de questions de débutant


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