Presentation is loading. Please wait.

Presentation is loading. Please wait.

Generic Types  Recent release of Java added generics  Include type parameters in class definition  Like methods, parameters can change each time 

Similar presentations


Presentation on theme: "Generic Types  Recent release of Java added generics  Include type parameters in class definition  Like methods, parameters can change each time "— Presentation transcript:

1

2 Generic Types  Recent release of Java added generics  Include type parameters in class definition  Like methods, parameters can change each time  Fields independent of types can now be written

3 Generic Types  On allocating instance, actual type is specified  Must be reference type or String as actual type  Code runs as if were written using that type  Type used by instance cannot be changed  Type parameter becomes part of variable’s type

4 Generics Before & After Before GenericsAfter Generics

5 Writing Generics

6

7

8

9 See Generics Behave

10 For earth, class written like as if T were replaced by Integer

11 See Generics Behave

12 For matchbox, T is Car at same time it is Integer when using earth

13 Using Generics Without GenericsWith Generics Integer i; Car c; Bag n;... n = new Bag(5,“B”); i = ((Integer)n.getData()); c = ((Car)n.getData()); n.setData(c); i = ((Integer)n.getData()); c = ((Car)n.getData()); Integer i; Car c; Bag n; Bag m;... n = new Bag (5,“B”); i = n.getData(); c = n.getData(); n.setData(s); m = new Bag (c, “B”); i = m.getData(); c = m.getData();

14 Using Generics Without GenericsWith Generics Integer i; Car c; Bag n;... n = new Bag(5,“B”); i = ((Integer)n.getData()); c = ((Car)n.getData()); n.setData(c); i = ((Integer)n.getData()); c = ((Car)n.getData()); Integer i; Car c; Bag n; Bag m;... n = new Bag (5,“B”); i = n.getData(); c = n.getData(); n.setData(s); m = new Bag (c, “B”); i = m.getData(); c = m.getData();

15 Using Generics Without GenericsWith Generics Integer i; Car c; Bag n;... n = new Bag(5,“B”); i = ((Integer)n.getData()); c = ((Car)n.getData()); n.setData(c); i = ((Integer)n.getData()); c = ((Car)n.getData()); Integer i; Car c; Bag n; Bag m;... n = new Bag (5,“B”); i = n.getData(); c = n.getData(); n.setData(s); m = new Bag (c, “B”); i = m.getData(); c = m.getData();

16 Using Generics Without GenericsWith Generics Integer i; Car c; Bag n;... n = new Bag(5,“B”); i = ((Integer)n.getData()); c = ((Car)n.getData()); n.setData(c); i = ((Integer)n.getData()); c = ((Car)n.getData()); Integer i; Car c; Bag n; Bag m;... n = new Bag (5,“B”); i = n.getData(); c = n.getData(); n.setData(c); m = new Bag (c, “B”); i = m.getData(); c = m.getData();

17 public class Entry { private S key; private TYPE value; // And more goes here... } Entry a; Entry b; Entry c; Entry d; Entry e; Can Use Multiple Generic Types

18 public class Entry { private S key; private TYPE value; // And more goes here... } Entry a; Entry b; Did not specify for each type Entry c; Entry d; Entry e; Can Use Multiple Generic Types

19 public class Entry { private S key; private TYPE value; // And more goes here... } Entry a; Entry b; Did not specify for each type Entry c; Entry d; Not reference type Entry e; Can Use Multiple Generic Types

20 When To Specify Type  Whenever class name used (except constructors)  Variable declarations: ArrayList hogCount;  Object instantiation: hogCount = new ArrayList ();  Return type for method : private ArrayList transport()  Parameter listing: public void cook(ArrayList fd)  Used as type parameter: ArrayList > bacon;

21  Type cannot be specified instantiating array  Compiler error if type specified during instantiation  Can provide type theory explaining this problem Generics Annoyance

22  Type cannot be specified instantiating array  Can use generics with arrays, but need typecast  Only needed once, use generics after instantiation  Still checks when compiling, so get most benefits public class Farm { private ArrayList [] troughs; private T[] animals; public Farm() { troughs = (ArrayList [])new ArrayList[10]; animals = (T[])new Object[1034821]; } } Generics Annoyance

23 In Case of Unknown Type

24

25 Wildcard in Generic public class ListHolder { private ArrayList myList; public void setList(ArrayList lst){ myList = lst; } public void printListSize() { System.out.println(myList.size()); } public ArrayList getList() { return myList; } }

26 Wildcard in Generic public class ListHolder { private ArrayList myList; public void setList(ArrayList lst){ myList = lst; } public void printListSize() { System.out.println(myList.size()); } public ArrayList getList() { return myList; } } ? matches any reference type (and String )

27 Wildcard in Generic public class ListHolder { private ArrayList myList; public void setList(ArrayList lst){ myList = lst; } public void printListSize() { System.out.println(myList.size()); } public ArrayList getList() { return myList; } } Any ArrayList can be passed in for lst

28 Wildcard in Generic public class ListHolder { private ArrayList myList; public void setList(ArrayList lst){ myList = lst; } public void printListSize() { System.out.println(myList.size()); } public ArrayList getList() { return myList; } } Can call methods as long as missing type not important

29 Wildcard in Generic public class ListHolder { private ArrayList myList; public void setList(ArrayList lst){ myList = lst; } public void printListSize() { System.out.println(myList.size()); } public ArrayList getList() { return myList; } } Legal, but yucky. All type information is lost!

30 Typecasting Explained

31

32

33 Your Turn  Get into your groups and complete activity

34 For Monday  You can use on this midterm:  Your textbook & notes IF  Printout of slides IF has notes on that day's slides  At the same time, you may NOT use:  Computer, calculator, cell phone, or similar  Copies of daily activities and/or solutions  Friends, Romans, countrymen or their ears  To be certain rules are followed, when test ends  Hand in all printed material you had with you

35 How to Prepare for Monday DODON'T  Make cheat sheets for the test  Review how parts of Java work  Add post-its to important pages  Memorize  Drink case of 40s before test  Use post-its as clothing

36 For Next Lecture  Midterm #1 is on Monday  Study, study, study  Get your notes in order


Download ppt "Generic Types  Recent release of Java added generics  Include type parameters in class definition  Like methods, parameters can change each time "

Similar presentations


Ads by Google