PDF de programación - Genéricos

Imágen de pdf Genéricos

Genéricosgráfica de visualizaciones

Publicado el 31 de Julio del 2017
331 visualizaciones desde el 31 de Julio del 2017
108,7 KB
13 paginas
Creado hace 17a (23/04/2007)
Genéricos

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y Computación

Universidad Complutense de Madrid

23 de abril de 2007

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

¿Para qué?

p r i v a t e static List l e e P u n t o s ( String f i c h e r o )

throws F i l e N o t F o u n d E x c e p t i o n , I O E x c e p t i o n {

B u f f e r e d R e a d e r lector = new B u f f e r e d R e a d e r ( new F i l e R e a d e r ( f i c h e r o ));
List l i s t a P u n t o s = new L i n k e d L i s t ();
String datos = lector . r e a d L i n e ();
while ( datos != null ){

Punto p = new Punto ( datos );
l i s t a P u n t o s . add ( p );
datos = lector . r e a d L i n e ();

}
return l i s t a P u n t o s ;

}

1
2
3
4
5
6
7
8
9
10
11
12
13

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Evitar conversiones de tipo

p r i v a t e static void a n a l i z a L i s t a P u n t o s ( List c ){

I t e r a t o r itr = c . i t e r a t o r ();
int i =1;
while ( itr . h a s N e x t ()){

Punto p = ( Punto ) itr . next ();
. . . . . . . . . . . . . . . . . . . . . . . . . . .

}

}

1
2
3
4
5
6
7
8

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Evitar conversiones de ejecución

Lista lista = l e e P u n t o s ( f i c h e r o );
lista . add ( new Recta ( new Punto (0 ,0) , new Punto (1 ,0)));
a n a l i z a P u n t o s ( lista );

1
2
3

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Definiendo clases genéricas

public i n t e r f a c e List <E >{

void add ( E x );
Iterator <E > i t e r a t o r ();

}

public i n t e r f a c e Iterator <E >{

E next ();
b o o l e a n h a s N e x t ();

}

1
2
3
4
5
6
7
8
9

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Subclases

List < Punto > ls = new ArrayList < Punto >();
List < FiguraPlana > lo = ls ; // ¿Es a d m i s i b l e ?

lo . add ( new Recta (A , B )); // s e r í a l e g a l .

1
2

1

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Comodines

void m u e s t r a ( Collection < Object > c ) {

for ( Object e : c ) {

System . out . p r i n t l n ( e );

}

¿Puedo pasarle algo de tipo Lista<FiguraPlana>?

void m u e s t r a ( Collection <? > c ) {

for ( Object e : c ) {

System . out . p r i n t l n ( e );

}

1
2
3
4

1
2
3
4

Es una colección de tipo desconocido, pero al menos deben ser
objetos.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Comodines Acotados

p r i v a t e static void m u e s t r a ( List <? e x t e n d s FiguraPlana > c ){

I t e r a t o r itr = c . i t e r a t o r ();
int i =1;
while ( itr . h a s N e x t ()){

System . out . format ( " E l e m e n t o %d " + itr . next () , i );
System . out . p r i n t l n ();
i ++;

}

}

List < FiguraPlana > l i s t a F i g u r a s = l e e F i g u r a s ( n o m b r e F i g u r a s );
List < Punto > l i s t a P u n t o s = l e e P u n t o s ( n o m b r e P u n t o s );
System . out . p r i n t l n ( " Puntos : " );
m u e s t r a ( l i s t a P u n t o s );
System . out . p r i n t l n ( " F i g u r a s : " );
m u e s t r a ( l i s t a F i g u r a s );

1
2
3
4
5
6
7
8
9

1
2
3
4
5
6

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

Métodos genéricos

void i n s t e r t a ( Collection <? > c , F i g u r a P l a n a [] f i g u r a s ) {

for ( F i g u r a P l a n a f : f i g u r a s ) {

c . add ( f ); // Ilegal , no se el tipo base de f i g u r a .

}

}

void i n s t e r t a ( Collection <? e x t e n d s FiguraPlana > c , F i g u r a P l a n a [] f i g u r a s ) {

for ( F i g u r a P l a n a f : f i g u r a s ) {

c . add ( f );

// Ilegal , no se el tipo base de f i g u r a .

}

}

1
2
3
4
5

1
2
3
4
5

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

p r i v a t e static < Fig e x t e n d s FiguraPlana > void i n s t e r t a ( Collection < Fig > c ,

Fig [] f i g u r a s ) {

for ( Fig f : f i g u r a s ) {

c . add ( f );

}

}

1
2
3
4
5
6

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

i n t e r f a c e Sink <T > {

flush ( T t );

}
public static <T > T w r i t e A l l ( Collection <T > coll , Sink <T > snk ) {

T last ;
for ( T t : coll ) {

last = t ;
snk . flush ( last );

}
return last ;

}

. . . . . . . . . . . . . . . . . . . . .

Sink < Object > s ;
Collection < String > cs ;
String str = w r i t e A l l ( cs , s ); // I l e g a l .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

public static <T > T w r i t e A l l ( Collection <? e x t e n d s T > , Sink <T >) {
...
}
...
String str = w r i t e A l l ( cs , s ); // D e v u e l v e algo de c l a s e O b j e c t

1
2
3
4
5

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos

public static <T > T w r i t e A l l ( Collection <T > , Sink <? super T >) {
...
}
...
String str = w r i t e A l l ( cs , s ); // D e v u e l v e algo de c l a s e O b j e c t

1
2
3
4
5

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Genéricos
  • Links de descarga
http://lwp-l.com/pdf5888

Comentarios de: Genéricos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad