chapter 6 java generic type - southeast universitycse.seu.edu.cn/personalpage/wyang/chapter...

43
Chapter 6 Java Generic Type Wang Yang wyang AT njnet.edu.cn

Upload: duonglien

Post on 01-May-2018

241 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Chapter 6 Java Generic Type

Wang Yangwyang AT njnet.edu.cn

Page 2: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Outline• Last Chapter Review

• Significance of Generic Type

• Definition of Generic Type

• Usage of Generic Type

• Forbidden of Generic Type

• Reference

Page 3: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Last Chapter Review

Page 4: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Collection

• Array & Arrays

• initialize : fill / copyOf

• search & sort : binarySearch / sort

• misc : toString / equal

Page 5: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Collection• Collection<E>

• List<E>

• ArrayList<E> / LinkedList<E>

• Map<K,V>

• HashMap<K,V>

• Collections

• Performance Benchmark

Page 6: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Significance of Generic Type

Page 7: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Sometimes

• We want a data structure class for all classes

• Collection<E>, Map<K,V>

• We want a function work all classes

• Arrays.sort(T[] a, Comparator<? super T> c)

Page 8: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...• We want a Collection, so we do it like

Page 9: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...• we use it like...

Page 10: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...• we use it like...

Wrong, you can’t assign an object to a student

Page 11: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...

Page 12: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...

Compiler would allow it, because

they are all derived from

Object

Page 13: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...

Compiler would allow it

But JVM would found it

Page 14: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

If we don’t have Generic...

• So If we don’t have Generic

• We still can work

• but it is inconvenient : do the cast

• and it is error-prone : mistake between different Classes

Page 15: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

we want Generic• We want an mechanism that help us do it

• correctly : check before the class casting

• concisely : do the class casting automatically

• It is Java Generic.

• write code that is safer and easier to read

• especially useful for general data structures

Page 16: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Definition of Generic Type

Page 17: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Type• What is Generic Type

• a generic class or interface that is parameterized over types.

type parameter

Constructor has not type

Page 18: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Type

• What T can do

• class variables,

• parameters,

• return type

• local variables

Page 19: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Type• A generic class can have multi types

parameter

Page 20: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Type• Type Parameter Naming Conventions

• single, uppercase letters

• E - Element (used extensively by the Java Collections Framework)

• K - Key

• N - Number

• T - Type

• V - Value

• S,U,V etc. - 2nd, 3rd, 4th types

Page 21: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Type• Instantiate

• use the real class type to instantiate the generic type

• Pair<String> pair

• Pair<String, Integer> pair

• Pair<String, Pair<String, Integer>> pair

Page 22: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Generic Method• Generic Method

• methods that introduce their own type parameters

Page 23: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Internal in Java Generics• Java Generics technique : Erasure

• Replace all type parameters in generic types with their bounds or Object

• Insert type casts if necessary to preserve type safety.

• do all the check in Compiler

Page 24: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Usage of Generic Type

Page 25: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Bounded Type Parameters• If we want specify some ability of T

Page 26: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Bounded Type Parameters• If we Instantiate a class without the ability

Page 27: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Bounded Type Parameters• We want to tell Compiler about it

• Bounded Type Parameters

Compiler find it : Bound Mismatch

Page 28: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard• Sometimes the Java Generic looks mad...

The Compiler won’t let you do it!!

Page 29: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard

• Unfortunately, List<Number> has nothing to do with List<Integer>

• We want another way tell compiler we want List<subclass of Number>

• Java introduce wildcard : ?

Page 30: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard

Page 31: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard

• Upper Bound Wildcard

• Lower Bound Wildcard

• Unbounded Wildcard

Page 32: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard• Upper Bound Wildcard : ? extends

• all instance are subclass of upper bound

• Scenario : the variable are in variable

• the function read the elements from the variable

Page 33: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard• Lower Bound Wildcard : ? super

• all instance are superclass of lower bound

• Scenario : the variable are out variable

• the function add the elements to the variable

Page 34: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Wildcard• Unbounded Wildcard : ?

• all instance can be any class

• Scenario : limited actions, only Object function are safe

Page 35: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Forbidden of Generic

Page 36: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Primitive Types• Cannot Instantiate Generic Types with

Primitive Types

wrongRight

Page 37: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Create Instance• Cannot Create Instances of Type

Parameters

Wrong

Page 38: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Declare Static• Cannot Declare Static Fields Whose Types

are Type Parameters

What’s the internal's type: String ? Integer ? It’s a disaster!!

Page 39: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Arrays• Cannot Create Arrays of Parameterized

Types

Page 40: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Exception• Cannot Create, Catch, or Throw Objects of

Parameterized Types

Page 41: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Cannot : Overload• Cannot Overload a Method Where the

Formal Parameter Types are used

Page 42: Chapter 6 Java Generic Type - Southeast Universitycse.seu.edu.cn/PersonalPage/wyang/Chapter 6.pdf · Outline • Last Chapter Review • Significance of Generic Type • Definition

Reference