DOC PREVIEW
Duke CPS 100E - Java 5 New Features

This preview shows page 1-2-3-4 out of 12 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 12 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 12 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 12 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 12 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 12 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CompSci 100E40.1Java 5 New Featuresÿ Genericsÿ Enhanced for loopÿ Autoboxing/unboxingÿ Typesafe enumsÿ Other Varargs Static Import Metadata New classes and methods VM EnhancementsCompSci 100E40.2Genericsÿ Allows classes to store objects whose type is irrelevant to storing class, while allowing type-safe retrievalÿ E.g., Collectionÿ SyntaxArrayList<String> list = new ArrayList<String>();list.put(“hello”); // put() takes a StringIterator<String> iter = list.iterator();String s = iter.next(); // next() returns a Stringÿ Compare with earlier JavaArrayList list = new ArrayList();list.put(“hello”); // put() takes an ObjectIterator iter = list.iterator();String s = (String)iter.next();// next() returns an Object which must be cast to StringCompSci 100E40.3Generics in API Docsÿ In API documentation, generics are given a type alias, e.g., “E”: Alias is arbitrary, but stands for the same type throughout class definition Can be on more than one type using different aliasesÿ Examples Class ArrayList<E>o add(E o)o E get(int index) Interface Map<K,V>o V put(K key, V value)o V get(Object key)o Collection<V> values()CompSci 100E40.4Enhanced for Loopÿ Replaced iterators, indexingÿ Iterators and indexing are prone to bounds errors// throws ArrayIndexOutOfBoundsExceptionfor (int i = 0; i <= arr.length; i++){ System.out.println(arr[i]); }// what does this do?Iterator iter = list.iterator();while (iter.hasNext()) {if (!“stop”.equals(iter.next())) {System.out.println(iter.next());}}CompSci 100E40.5Looping in Java 5ÿ Java 5 introduces new language syntax for looping over arrays and collections using for (aka “For-Each” loop)ÿ Syntax:for (type var: collection){// do something withvar}ÿ Examples:void processArray(String[] arr) {for (String s: arr)System.out.println(s.toUpperCase());}// generics work with new for loop to simplify syntax!void processList(List<String> list) {for (String s: list)System.out.println(s);}CompSci 100E40.6Autoboxing/Unboxingÿ Java primitive types provided for performance, but mix poorly with objects:// compilation error!ArrayList list = new ArrayList();list.add(42);int x = (int) list.get(0);// Kludgey fix provided by original Java: ugh!list.add(new Integer(42));int x = ((Integer)list.get(0)).intValue()ÿ Java 5 automatically “boxes” primitive types in Object types asneeeded:Integer objInt;objInt = 42; // equivalent to objInt = new Integer(42);CompSci 100E40.7Autoboxing with Generics and For-Eachÿ Note again how the new Java 5 features work together:// old syntaxInteger sumInteger(List list) {int sum = 0;Iterator iter = list.iterator();while (iter.hasNext()) {Integer iobj = (Integer) iter.next();sum += iobj.intValue();}}return new Integer(sum);// new syntaxInteger sumIntegers(List<Integer> list) {int sum = 0;for (int x: list) sum+= x;// auto-unboxingelementsreturn sum; // autobox return value}CompSci 100E40.8New Features: Limitationsÿ Generics are not everywhere, yet consider list.toArray() returning Object[]ÿ Enhanced for loop on non-parameterized collections is still annoying (obviously using generics helps, but what if you are forced to use legacy code?) for (Object o: list) { String s = (String)o; ... }ÿ For loop doesn't give you a good way to loop over multiple collections in parallel: still must do:int[] arr1, arr2;for (int i; i < arr1.length; i++) {int x = arr1[i] + arr2[i];}CompSci 100E40.9New Features: Limitations (con't)ÿ Autoboxing doesn't carry over to arrays, or to converting arrays to lists and vice versa: can't do the following:int[] arr = new int[100];Integer[] arrInts = arr;List<Integer> list = new ArrayList<Integer>();list.addAll(arr);CompSci 100E40.10Typesafe Enumsÿ Enums are a safer alternative to constants Old way:public static final int GO = 0;public static final int STOP = 1;public static final int YIELD = 2;.... Consider code taking these values as a parameter:void process(int status) {if (status == GO) ...if (status == STOP) ...if (status == YIELD) ...else ... // what does status == 10 mean?CompSci 100E40.11The Enum Alternativeÿ Enums define a type, just like a class or primitive typeÿ Enums are not interchangeable with ints, impossible to get undefined valuesÿ Enums can be enumerated using forÿ String representations of enums actually mean somethingÿ Examples:public enum TrafficLight { GO, STOP, YIELD }public TrafficLight myLight = STOP;for (TrafficLight t: TrafficLight.values()) {System.out.print(t);System.out.print(“ “);}// output: GO STOP YIELDCompSci 100E40.12Other New Featuresÿ Java 5 has many other new features, including: Varargs – variable-size argument lists for methods Static Import – import constants, e.g. Math.PI Metadata – attach extra information about code New classes and methods – Queue, Scanner, printf, etc. VM


View Full Document

Duke CPS 100E - Java 5 New Features

Documents in this Course
Topics

Topics

9 pages

Lecture

Lecture

3 pages

Notes

Notes

2 pages

Hashing

Hashing

19 pages

Lecture

Lecture

59 pages

Lecture

Lecture

6 pages

Lecture

Lecture

4 pages

Lecture

Lecture

20 pages

Lecture

Lecture

12 pages

Lecture

Lecture

12 pages

Lecture

Lecture

7 pages

Lecture

Lecture

8 pages

Lecture

Lecture

10 pages

Lecture

Lecture

4 pages

Notes

Notes

16 pages

Lecture

Lecture

5 pages

Lecture

Lecture

9 pages

Lecture

Lecture

4 pages

Lecture

Lecture

13 pages

Lecture

Lecture

6 pages

Lecture

Lecture

16 pages

Lecture

Lecture

5 pages

Lecture

Lecture

5 pages

Lecture

Lecture

12 pages

Lecture

Lecture

12 pages

Lecture

Lecture

10 pages

Sets

Sets

14 pages

Lecture

Lecture

9 pages

Lecture

Lecture

4 pages

Test 1

Test 1

7 pages

Load more
Download Java 5 New Features
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Java 5 New Features and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Java 5 New Features 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?