Re: Generics question
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
sakcee@gmail.com schreef:
Hi
what is the difference between following 2 loops?
when is the casting done, i.e. can an object be casted by applying
this generaic 'tags'
thanks for help in advance
Map<String,String> aMap = new HashMap<String,String>();
for(Map.Entry<String,String> e: aMap.entrySet()){
System.out.print( e.getKey(), e.getValue() );
}
and
for(Map.Entry e: amap.entrySet()){
System.out.print( e.getKey(), e.getValue() );
}
The first is generic, the second isn???t. But the print() method cares
not. It just invokes (indirectly) the object???s toString() method, which
both have, generic or not.
It would make more sense if you really did something with the key and
value, e.g. assign them to a local parameter. Then you???ll see that
Map<String,Integer> aMap = new HashMap<String,Integer>();
for(Map.Entry<String,Integer> e: aMap.entrySet()){
String key = e.getKey();
Integer value = e.getValue();
// do some more
}
is allowed, whereas
for(Map.Entry e: amap.entrySet()){
String key = e.getKey();
Integer value = e.getValue();
// do some more
}
is not. To answer your question: generics was introduced to get rid of
all the unnecessary casting. So there is no casting there. The
compiler just statically checks that the types are right.
Summary: it is not that casting is done by the generic ???tags???, but that
the generics /avoid/ casting.
H.
- --
Hendrik Maryns
http://tcl.sfs.uni-tuebingen.de/~hendrik/
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGOHSpe+7xMGD3itQRAqmjAJwOafxX04/O5kaL/3m1ohjV+3/VdACfbup6
gEl1fV68CZCHwA5noMxUjSg=
=5RZx
-----END PGP SIGNATURE-----