1. Generics in Java 5 Better Code in Fewer Keystrokes Jeslie Chermak ( [email_address] )
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Editor's Notes
GOOD AFTERNOON MY NAME IS … BEFORE WE START … ANYONE WITH C++ KNOWLEDGE? ANYONE THINK TYPED LANGUAGES ARE GOOD?
WHY CHANGE? I’M PRODUCTIVE AND COMFORTABLE AS IS.
WE’RE GOING TO MAKE A SIMPLE CLASS TO ILLUSTRATE SOME OF THE POWER AND NOTATION OF GENERICS.
WE START WITH A PRE-JAVA 5 VERSION. WE’LL USE JAVA 1.4 NOTE THAT OUR EXAMPLE LACKS JAVADOC COMMENTS. DON’T DO THIS IN ANY OF YOUR OWN CODE!
OUR CODE IS SOMEWHAT TYPE AMBIGUOUS, ESPECIALLY FOR THE COLLECTIONS
WE’LL REWIRTE OUR EXAMPLE FOR JAVA 5 USING THE GENERICS BUILT INTO THE REVISED JAVA.UTIL.* PACKAGES
OKAY, WE GOT RID OF THE TYPE AMBIGUITY IN THE COLLECTIONS. BUT WE NEED TO REWRITE THIS FOR EVERY NEW KIND OF STACK WE NEED! C++ SOLUTION IS TEMPLATES. JAVA SOLUTION IS GENERICS AGAIN.
NOTE COMPILER WOULD IMMEDIATELY CATCH THE “int” WE OVERLOOKED IN OUR PRIOR IMPLEMENTATION (AND AUTO-UNBOX IT)
THAT SECOND PIECE OF BAD NEWS IS REALLY BAD. WATCH WHAT HAPPENS WHEN WE CONVERT A SIMPLE “PRINT ALL ELEMENTS IN A COLLECTION” TO USE GENERICS
WHAT IF WE DON’T WANT THE ULTIMATE BASE TYPE (Object)? WHAT IF WE NEED SOME HIGHER TYPE? AN UPPER BOUND AS WE CLIMB THE HIERARCHY OF OBJECT INHERITANCE, SO TO SPEAK?
WHAT IF WE DON’T WANT THE ULTIMATE BASE TYPE (Object)? WHAT IF WE NEED SOME HIGHER TYPE? AN UPPER BOUND AS WE CLIMB THE HIERARCHY OF OBJECT INHERITANCE, SO TO SPEAK?
WHAT IF WE DON’T WANT THE ULTIMATE BASE TYPE (Object)? WHAT IF WE NEED SOME HIGHER TYPE? AN UPPER BOUND AS WE CLIMB THE HIERARCHY OF OBJECT INHERITANCE, SO TO SPEAK?
THIS WAS JUST AN INTRODUCTION. THERE ARE SOME VERY USEFUL TOPICS WE HAVE NOT EVEN TOUCHED ON.