cours-java-1.5
14 pages
Breton
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
14 pages
Breton
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Java 1.5F. Barthelemy14 mars 20061 IntroductionJava a connu plusieurs versions qui ont apporte des changements plus ou moins importants.A chaque fois la compatibilite ascendante est assuree. Le dernier grand changement a ete lepassage de la version 1.4 a la version 1.5 qui a introduit beaucoup de nouveautes dans lelangage. Ce changement est intervenu dans le courant de l’ete 2004.Ces changements sont apportes au niveau du langage alors que la machine virtuelle sous-jacente (JVM) n’a pas change. Pour la plupart, les changements sont donc des facilites syn-taxiques qui permettent d’ecrire plus simplement des programmes qui sont equivalents a ceuxqu’on pouvait ecrire avant. Nous allons donc pouvoir utiliser un decompilateur pour obtenirun programme type java 1.4 equivalent a ce que nous allons ecrire avec java 1.5.Ce chapitre se decompose en deux parties :{ diverses petites ameliorations.{ la genericite, qui est un changement plus consequent.2 Petites innovations2.1 Autoboxing des types primitifsimport java . u t i l . ;class Oldfpublic static void main( String [ ] args )fInteger i ;int x = 12;i = new Integer (x ) ;x = i . intValue ( ) ;Vector v = new Vector ( ) ;int [ ] t = f1 ,2 ,3 ,4g;v . add(new Integer ( t [ 1 ] ) ) ;t [ 0 ] = ( ( Integer ) v . elementAt ( 0 ) ) . intValue ( ) ;ggclass AutoBoxingfpublic static void main( String [ ] args )fInteger i ;int x = 12;1i = x ;x = i ;Vector v = new Vector ( ) ...

Informations

Publié par
Nombre de lectures 37
Langue Breton

Extrait

Java 1.5 F.Barthelemy 14 mars 2006
1 Introduction Javaaconnuplusieursversionsquiontapportedeschangementsplusoumoinsimportants. Achaquefoislacompatibiliteascendanteestassuree.Lederniergrandchangementaetele passagedelaversion1.4alaversion1.5quiaintroduitbeaucoupdenouveautesdansle langage.Cechangementestintervenudanslecourantdelete2004. Ceschangementssontapportesauniveaudulangagealorsquelamachinevirtuellesous-jacente(JVM)napaschange.Pourlaplupart,leschangementssontdoncdesfacilitessyn-taxiquesquipermettentdecrireplussimplementdesprogrammesquisontequivalentsaceux quonpouvaitecrireavant.Nousallonsdoncpouvoirutiliserundecompilateurpourobtenir unprogrammetypejava1.4equivalentacequenousallonsecrireavecjava1.5. Cechapitresedecomposeendeuxparties: – diverses petites ameliorations. lagenericite,quiestunchangementplusconsequent.
2 Petites innovations 2.1 Autoboxing des types primitifs import j a v a . u t i l .  ; c l a s s Old { public s t a t i c void main ( S t r i n g [ ] a r g s ) { I n t e g e r i ; i n t x = 1 2 ; i = new I n t e g e r ( x ) ; x = i . i n t V a l u e ( ) ; V e c t o r v = new V e c t o r ( ) ; i n t [ ] t = { 1 , 2 , 3 , 4 } ; v . add ( new I n t e g e r ( t [ 1 ] ) ) ; t [ 0 ] = ( ( I n t e g e r ) v . e l e m e n t A t ( 0 ) ) . i n t V a l u e ( ) ; } } c l a s s AutoBoxing { public s t a t i c void main ( S t r i n g [ ] a r g s ) { I n t e g e r i ; i n t x = 1 2 ;
1
i = x ; x = i ; V e c t o r v = new V e c t o r ( ) ; i n t [ ] t = { 1 , 2 , 3 , 4 } ; v . add ( 1 ) ; t [ 0 ] = ( I n t e g e r ) v . e l e m e n t A t ( 0 ) ; } } Ladecompilationdelaclasse AutoBoxing : // D e c o m p i l e d b y Jad v1 . 5 . 8 e . C o p y r i g h t 2 0 0 1 P a v e l K o u z n e t s o v . // Jad home p a g e : h t t p : / /www . g e o c i t i e s . com/ k p d u s / j a d . h t m l // D e c o m p i l e r o p t i o n s : p a c k i m p o r t s ( 3 ) // S o u r c e F i l e Name : AutoBoxing . j a v a import j a v a . u t i l . V e c t o r ; c l a s s AutoBoxing {
AutoBoxing ( ) { } public s t a t i c void main ( S t r i n g a r g s [ ] ) { i n t i = 1 2 ; I n t e g e r i n t e g e r = I n t e g e r . v a l u e O f ( i ) ; i = i n t e g e r . i n t V a l u e ( ) ; V e c t o r v e c t o r = new V e c t o r ( ) ; i n t a i [ ] = { 1 , 2 , 3 , 4 } ; v e c t o r . add ( I n t e g e r . v a l u e O f ( 1 ) ) ; a i [ 0 ] = ( ( I n t e g e r ) v e c t o r . e l e m e n t A t ( 0 ) ) . i n t V a l u e ( ) ; } }
2.2 Boucle for pour les iterateurs public i n t e r f a c e j a v a . u t i l . I t e r a t o r { boolean hasNext ( ) ; O b j e c t n e x t ( ) ; } public i n t e r f a c e j a v a . l a n g . i t e r a b l e { I t e r a t o r i t e r a t o r ( ) ; 2
} import j a v a . u t i l . V e c t o r ; c l a s s F o r I t e r a t o r { V e c t o r v = new V e c t o r ( ) ; v . add ( 1 5 ) ; v . add ( 1 0 ) ; v . add ( 5 ) ; v . add ( 2 0 ) ; f o r ( O b j e c t o : v ) { System . o u t . p r i n t l n ( o . t o S t r i n g ( ) ) ; } } } c l a s s ForTableau { public s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] t a b = { 1 , 2 , 3 , 4 } ; f o r ( i n t i : t a b ) { System . o u t . p r i n t l n ( i ) ; } } } Decompilationdecesclasses: / Decompiled by Jad v1 . 5 . 8 e . C o p y r i g h t 2 0 0 1 P a v e l K o u z n e t s o v . // Jad home p a g e : h t t p : / /www . g e o c i t i e s . com/ k p d u s / j a d . h t m l // D e c o m p i l e r o p t i o n s : p a c k i m p o r t s ( 3 ) // S o u r c e F i l e Name : F o r I t e r a t o r . j a v a import j a v a . i o . P r i n t S t r e a m ; import j a v a . u t i l . I t e r a t o r ; import j a v a . u t i l . V e c t o r ; c l a s s F o r I t e r a t o r {
F o r I t e r a t o r ( ) { } public s t a t i c void main ( S t r i n g a r g s [ ] ) { V e c t o r v e c t o r = new V e c t o r ( ) ; v e c t o r . add ( I n t e g e r . v a l u e O f ( 1 5 ) ) ; v e c t o r . add ( I n t e g e r . v a l u e O f ( 1 0 ) ) ; v e c t o r . add ( I n t e g e r . v a l u e O f ( 5 ) ) ; v e c t o r . add ( I n t e g e r . v a l u e O f ( 2 0 ) ) ;
3
ForTableau ( ) { } public s t a t i c void main ( S t r i n g a r g s [ ] ) { i n t a i [ ] = { 1 , 2 , 3 , 4 } ; i n t a i 1 [ ] = a i ; i n t i = a i 1 . l e n g t h ; f o r ( i n t j = 0 ; j < i ; j ++) { i n t k = a i 1 [ j ] ; System . o u t . p r i n t l n ( k ) ; }
} }
2.3Methodesanombredeparametresvariable c l a s s T r o i s P o i n t s { public s t a t i c i n t a d d i t i o n n e r ( i n t . . . v a l s ) { i n t t o t a l = 0 ; f o r ( i n t i = 0 ; i < v a l s . l e n g t h ; i ++) { t o t a l = t o t a l + v a l s [ i ] ; } return t o t a l ;
4
ngri))()j=oberitnirp(nlt.jbotSotxt();System.out.;)tiretaroh.saeN.iorctver(torateirotaret=rotaretectoObjor(Ibj;flbae{uajtri.avrP.oStnieatrclm;sFasTaorliNecrFeoFIrma:etor.teraimpojavatporelipcap:snoitsormpkiou/S)/(3om/kpduscities.c/lD/cemoj/dah.mtomdhagepv.soJa//www/oeg.th:e/:ptightopyr8e.C1.5.nzteKluoaPev0210//}});t(ex.noratvdaJybdelipmoceD
} public s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] t a b = { 1 , 2 , 3 } ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( 1 , 2 , 3 , 4 , 5 ) ) ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( t a b ) ) ; } } Decompilation: // D e c o m p i l e d b y Jad v1 . 5 . 8 e . C o p y r i g h t 2 0 0 1 P a v e l K o u z n e t s o v . // Jad home p a g e : h t t p : / /www . g e o c i t i e s . com/ k p d u s / j a d . h t m l // D e c o m p i l e r o p t i o n s : p a c k i m p o r t s ( 3 ) // S o u r c e F i l e Name : T r o i s P o i n t s . j a v a import j a v a . i o . P r i n t S t r e a m ; c l a s s T r o i s P o i n t s {
T r o i s P o i n t s ( ) { } public s t a t i c t r a n s i e n t i n t a d d i t i o n n e r ( i n t a i [ ] ) { i n t i = 0 ; f o r ( i n t j = 0 ; j < a i . l e n g t h ; j ++) i += a i [ j ] ; return i ; } public s t a t i c void main ( S t r i n g a r g s [ ] ) { i n t a i [ ] = { 1 , 2 , 3 } ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( new i n t [ ] { 1 , 2 , 3 , 4 , 5 } ) ) ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( a i ) ) ; } } c l a s s T r o i s P o i n t s B i s { public s t a t i c i n t a d d i t i o n n e r ( boolean b , i n t . . . v a l s ) { i n t t o t a l = 0 ;
5
f o r ( i n t i = 0 ; i < v a l s . l e n g t h ; i ++) { t o t a l = t o t a l + v a l s [ i ] ; } return t o t a l ; } public s t a t i c void main ( S t r i n g [ ] a r g s ) { i n t [ ] t a b = { 1 , 2 , 3 } ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( true , 1 , 2 , 3 , 4 , 5 ) ) ; System . o u t . p r i n t l n ( a d d i t i o n n e r ( f a l s e , t a b ) ) ; } }
Onnepeututiliserquunseultypedargumentvariableparmethode,etildoitobligatoi-rementˆetreendernierepositiondanslalistedesparametres.
2.4Typesenumeres
enum C a r t e { PIQUE , COEUR, CARREAU, TREFLE }
6
f i n a l c l a s s C a r t e extends Enum { public s t a t i c C a r t e v a l u e O f ( S t r i n g s ) { C a r t e a c a r t e [ ] = $VALUES ; i n t i = a c a r t e . l e n g t h ; f o r ( i n t j = 0 ; j < i ; j ++) { C a r t e c a r t e = a c a r t e [ j ] ; i f ( c a r t e . name ( ) . e q u a l s ( s ) ) return c a r t e ; } throw new I l l e g a l A r g u m e n t E x c e p t i o n ( s ) ; } private C a r t e ( S t r i n g s , i n t i ) { super ( s , i ) ; } public s t a t i c f i n a l C a r t e PIQUE ; public s t a t i c f i n a l C a r t e COEUR; public s t a t i c f i n a l CarteCARREAU; public s t a t i c f i n a l C a r t e TREFLE; private s t a t i c f i n a l C a r t e $VALUES [ ] ; s t a t i c { PIQUE = new C a r t e ( ”PIQUE” , 0 ) ; COEUR= new C a r t e ( ”COEUR” , 1 ) ; CARREAU= new C a r t e ( ”CARREAU” , 2 ) ; TREFLE = new C a r t e ( ”TREFLE” , 3 ) ; $VALUES = ( new C a r t e [ ] { PIQUE , COEUR, CARREAU, TREFLE } ) ; }
}
7
public enum Numbers { ONE( ” p r e m i e r e o c c u r r e n c e ” , 1 ) , TWO( ” deuxieme o c c u r r e n c e ” , 2 ) , THREE( ” t r o i s i e m e o c c u r r e n c e ” , 3 ) ;
Numbers ( S t r i n g d e s c r i p t i o n , i n t v a l u e ) { t h i s . d e s c r i p t i o n = d e s c r i p t i o n ; t h i s . v a l u e = v a l u e ; }
private S t r i n g d e s c r i p t i o n ; private i n t v a l u e ;
public S t r i n g g e t D e s c r i p t i o n ( ) { return t h i s . d e s c r i p t i o n ; }
public i n t g e t V a l u e ( ) { return t h i s . v a l u e ; } }
8
public f i n a l c l a s s Numbers extends Enum {
public s t a t i c f i n a l Numbers [ ] v a l u e s ( ) { return ( Numbers [ ] ) $VALUES . c l o n e ( ) ; } public s t a t i c Numbers v a l u e O f ( S t r i n g s ) { Numbers anumbers [ ] = $VALUES ; i n t i = anumbers . l e n g t h ; f o r ( i n t j = 0 ; j < i ; j ++) { Numbers numbers = anumbers [ j ] ; i f ( numbers . name ( ) . e q u a l s ( s ) ) return numbers ; } throw new I l l e g a l A r g u m e n t E x c e p t i o n ( s ) ; } private Numbers ( S t r i n g s , i n t i , S t r i n g s1 , i n t j ) { super ( s , i ) ; d e s c r i p t i o n = s 1 ; v a l u e = j ; } public S t r i n g g e t D e s c r i p t i o n ( ) { return d e s c r i p t i o n ; } public i n t g e t V a l u e ( ) { return v a l u e ; } public s t a t i c f i n a l Numbers ONE; public s t a t i c f i n a l Numbers TWO; public s t a t i c f i n a l Numbers THREE; private S t r i n g d e s c r i p t i o n ; private i n t v a l u e ; private s t a t i c f i n a l Numbers $VALUES [ ] ;
9
s t a t i c { ONE = new Numbers ( ”ONE” , 0 , ” p r e m i e r e o c c u r r e n c e ” , 1 ) ; TWO= new Numbers ( ”TWO” , 1 , ” deuxieme o c c u r r e n c e ” , 2 ) ; THREE = new Numbers ( ”THREE” , 2 , ” t r o i s i e m e o c c u r r e n c e ” , 3 ) ; $VALUES = ( new Numbers [ ] { ONE, TWO, THREE } ) ; } }
3Lagenericite 3.1 Avant la genericite Avantlagenericite,onrenoncaitatypercertainesvariables,achargepourleprogrammeur defaireluimˆemeuntypageexplicite(cast)danscertainscas. Exemple : c l a s s C e l l { private O b j e c t v a l ; C e l l ( O b j e c t o ) { v a l = o ; } void s e t ( O b j e c t o ) { v a l = o ; } O b j e c t g e t ( ) { return v a l ; } } c l a s s U s e C e l l { public s t a t i c void main ( S t r i n g [ ] a r g s ) { C e l l c = new C e l l ( new Compte ( ” Martin ” ) ) ; // c . g e t ( ) . d e p o t ( 5 0 ) ; // C e l l . j a v a : 1 6 : c a n n o t f i n d s y m b o l // s y m b o l : method d e p o t ( i n t ) // l o c a t i o n : c l a s s j a v a . l a n g . O b j e c t ( ( Compte ) c . g e t ( ) ) . d e p o t ( 5 0 ) ; ( ( Compte ) c . g e t ( ) ) . p r i n t ( ) ; } } Autreexemple,tiredelalibrairiestandard: import j a v a . u t i l . V e c t o r ; c l a s s U s e V e c t o r { public s t a t i c void main ( S t r i n g [ ] a r g s ) { 10
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents