PowerPoint-presentatie

Download Report

Transcript PowerPoint-presentatie

Bart van Kuik
Application Developer
Oracle Corporation
Java 1.5
New Language Features
Java 1.5: Tiger
 Less boilerplate code through syntax changes
 But no new keywords so compatibility with
existing code, except the enum keyword
Additions to Syntax







Generics
Enhanced for loop
Autoboxing/unboxing
Typesafe enums
Static Imports
Varargs
Metadata
Generics
 Also called 'parameterized types', since you
pass a parameter upon declaration and
instantiation:
List<String> lijstMetNamen =
new ArrayList<String>();
// 1.4: runtime error / 1.5: compiler error
lijstMetNamen.add(new Integer(1));
 Feature: covariant return types
Enhanced for loop
// Old syntax with iterators:
List list = new ArrayList();
for(Iterator i = list.iterator(); i.hasNext();) {
String s = (String) i.next();
System.out.println("String: " + s);
}
// New syntax
List<String> list = new ArrayList<String>();
for (String s : list) { // do something}
// The following is also possible:
String naam = "Harry";
for (char c : naam.toCharArray()) { // do something }
Autoboxing/unboxing
 public static void Cow.milk(Integer liter);
public static void Monkey.throw(int distance);
 From primitive to reference and back:
int i = 4;
Cow.milk(new Integer(i)); // 1.4
Cow.milk(i);
// 1.5
Object obj = new Integer(3);
Monkey.throw(((Integer)obj).intValue()); // 1.4
Monkey.throw((Integer)obj);
// 1.5
 Boxing null gives a NullPointerException
Typesafe enums
 Various disadvantages:
class Kaart {
static final
static final
static final
static final
}
int
int
int
int
HARTEN
KLAVEREN
RUITEN
SCHOPPEN
=
=
=
=
0;
1;
2;
3;
 New syntax:
public enum Kaart {
harten, klaveren, ruiten, schoppen
}
Static Imports
 Before 1.5: lots of typing work to get a
constant:
ErrorConstants.XML_NOT_VALID
 New type of import statement:
import static com.elsevier.ew.ErrorConstants.*;
 Both static attributes and methods
Varargs
 Pass a variable number of arguments to a
method
 Like the C function: printf("value: %d", 15);
 Compiler now understands this syntax:
public static int optellen(int args...) {
int resultaat = 0;
for(i = 0; i < args.length; i++)
restultaat = resultaat + args[i];
}
Metadata




Newest addition, separate JSR
Clues for precompilers, testtools, e.d.
C# attribute syntax: [xxx]
Java metadata syntax: @xxx
@test
public static int add(int... params) {
// blah
}
Conclusie




Gone through the JCP
Early access 2.2 is downloadable
Beta and Final release somewhere in 2004
Big names: Joshua Blog, Neil Gafter
QUESTIONS
ANSWERS