SlideShare une entreprise Scribd logo
1  sur  14
Agenda ,[object Object],Compile-time type safety for collections without casting ,[object Object],Automates use of Iterators to avoid errors ,[object Object],Avoids manual conversion between primitive types (such as int)  and wrapper types (such as Integer) ,[object Object],Provides all the well-known benefits of the Typesafe Enum pattern 1
Generics - Intro Tutorials : http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf ,[object Object]
Methods can be defined to operate on unknown types of Objects without using ‘Objects’ class. And no type casting is required.
Big advantage: collections are now type safe.2 Example : ‘Generify ‘ your Java classes – public class Box<T> {   private T t ;  public void add(Tt ) {  this.t = t;  }  public T get() {  return t;  }  } How to use this : Box<Integer> integerBox = new Box<Integer>();  	… 	integerBox.add(new Integer(25)); //typesafe only Integers can be passed 	Integer myInt = integerBox.get() //no typecasting required T is a type parameter that will be replaced by a real type. T is the name of a type parameter. This name is used as a placeholder for the actual type that will be passed to Gen when an object is created.
Generics – Example 2 3 Another Example  public class GenericFactory<E> {     Class theClass = null;     public GenericFactory(Class theClass) {         this.theClass = theClass;     }     public E createInstance() throws …{         return (E) this.theClass.newInstance();     } Usage : Creates a Factory of Generic Type GenericFactory<MyClass> factory =  new GenericFactory<MyClass>(MyClass.class); MyClass myClassInstance = factory.createInstance();
Generics – Generics in Methods 4 static <T> void fromArrayToCollection(T[] a, Collection<T> c) {         for (T o : a) {             c.add(o);         }     }     static <T> Collection<T> fromArrayToCollectionv2(T[] a) {         Collection<T> c = new ArrayList<T>();         for (T o : a) {             c.add(o);         }         return c ;     } One more Interesting Example… public <T> T ifThenElse(boolean b, T first, T second) {  	return b ? first : second;  }
Generics – With Collections 5 Lists List<String> list = new ArrayList<String>();  list.add(“A String”);  String string2 = list.get(0); // no type casting. Maps (can define multiple typed parameters) 	Map<String, String> map = new HashMap<String, String>();map.put ("key1", "value1");map.put ("key2", "value2");String value1 = map.get("key1"); Iterating a Generic List: List<String> list = new ArrayList<String>();  Iterator<String> iterator = list.iterator();  while(iterator.hasNext()){  String aString = iterator.next();  } Backward Compatibility 	List list = new ArrayList<String>();  Nested Generic Types 	List<List<String>> myListOfListsOfStrings;
Generics – Diving Deeper 6 Generics and Subtyping List<String> ls = new ArrayList<String>();  List<Object> lo = ls; //illegal won’t compile!! What’s the Problem ? lo.add(new Object());  String s = ls.get(0); // attempts to assign an Object to a String! In other words  Collection<Object>  is not a supertype of all the types of collections To cope with this sort of situation use Wildcards static void printCollection2(Collection<?> c) {  // Collection<?> -“collection of unknown”         for (Object e : c) {             System.out.println(e);         }  } Limitation in using unbounded wildcard Any method that takes Generic type of argument cannot be invoked : Collection<?> c = new ArrayList<String>(); c.add(new Object()); // compile time error
Generics – Subtyping continued… 7 Bounded Wildcards List<? extends Shape> is an example of a bounded wildcard. ,[object Object]
A wildcard with a lower bound looks like " ? super Type " Example : public class Collections {    public static <T> void copy     ( List<? super T> dest, List<? extends T> src) {  // uses bounded wildcards        for (int i=0; i<src.size(); i++)          dest.set(i,src.get(i));    }  } List<Object> output = new ArrayList< Object >(); List<Long>    input = new ArrayList< Long >(); ... Collections.copy(output,input);  // fine List<String> output = new ArrayList< String >(); List<Long>    input = new ArrayList< Long >(); ... Collections.copy(output,input);  // error 
Enhanced for-loop or for each loop 8 New syntax of for loop that works for Collections and Arrays -  Collections : void cancelAll(Collection<TimerTask> c) {  for (TimerTask t : c) { 		t.cancel(); 	}  } Arrays : int sum(int[] a) {  	int result = 0;  for (int i : a) { 	result += i;  	} 	return result;  } Nested – for (Suit suit : suits) { 	for (Rank rank : ranks){  		sortedDeck.add(new Card(suit, rank)); 	} } ,[object Object]
 The for-each construct gets rid of the clutter and the opportunity for error.,[object Object]
Enum - Introduction 10 Java Constants Before JDK 1.5 – public static final int SEASON_WINTER = 0;  public static final int SEASON_SPRING = 1;  …… Issues: Not Type-safe  ,[object Object],No Name space ,[object Object],Compile time binding  Print Values not self explanatory. JDK 1.5 gets linguistic support for enumerated types as follows : enum Season { WINTER, SPRING, SUMMER, FALL } ** Don’t confuse enum with the Enumeration interface, an almost obsolete way of iterating over Collections, replaced by Iterator.
Enum - Example 11 How to define them .. public enum Flavor {     CHOCOLATE(100), //declare all the possible values first.      VANILLA(120),     STRAWBERRY(80);     private int fCalories; // can have state (member variables)     int getCalories(){ // cusotm method       return fCalories;     }     private Flavor(int aCalories){ // constructor       fCalories = aCalories;     }   } How to use them … String getColor(Flavor flv){ // Used as normal java objects..  	if(flv == Flavor.VANILLA) // “==“ can be used for value comparison 	  	return “White” ; 	…….	 	switch(flv) {  		case VANILLA :  // You can use enums as case labels 		…… } String color = getColor(Flavor.VANILLA) // no constructor only constant values.

Contenu connexe

Tendances

Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminar
Gautam Roy
 
Csharp In Detail Part2
Csharp In Detail Part2Csharp In Detail Part2
Csharp In Detail Part2
Mohamed Krar
 

Tendances (20)

Stl Containers
Stl ContainersStl Containers
Stl Containers
 
Java generics final
Java generics finalJava generics final
Java generics final
 
Python programming
Python  programmingPython  programming
Python programming
 
Python for data science by www.dmdiploma.com
Python for data science by www.dmdiploma.comPython for data science by www.dmdiploma.com
Python for data science by www.dmdiploma.com
 
Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++Generic programming and concepts that should be in C++
Generic programming and concepts that should be in C++
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminar
 
Modern C++
Modern C++Modern C++
Modern C++
 
Regular types in C++
Regular types in C++Regular types in C++
Regular types in C++
 
The Swift Compiler and Standard Library
The Swift Compiler and Standard LibraryThe Swift Compiler and Standard Library
The Swift Compiler and Standard Library
 
Smart pointers
Smart pointersSmart pointers
Smart pointers
 
Smart Pointers in C++
Smart Pointers in C++Smart Pointers in C++
Smart Pointers in C++
 
Templates exception handling
Templates exception handlingTemplates exception handling
Templates exception handling
 
Types, classes and concepts
Types, classes and conceptsTypes, classes and concepts
Types, classes and concepts
 
Life & Work of Robin Milner | Turing100@Persistent
Life & Work of Robin Milner | Turing100@PersistentLife & Work of Robin Milner | Turing100@Persistent
Life & Work of Robin Milner | Turing100@Persistent
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
 
Csharp In Detail Part2
Csharp In Detail Part2Csharp In Detail Part2
Csharp In Detail Part2
 
Programming with Python
Programming with PythonProgramming with Python
Programming with Python
 
Scala
ScalaScala
Scala
 
Java tut1 Coderdojo Cahersiveen
Java tut1 Coderdojo CahersiveenJava tut1 Coderdojo Cahersiveen
Java tut1 Coderdojo Cahersiveen
 

En vedette

Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)
jeffz
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
WE-IT TUTORIALS
 

En vedette (20)

Crystal Reports
Crystal ReportsCrystal Reports
Crystal Reports
 
Oops
OopsOops
Oops
 
Cr8.5 usermanual
Cr8.5 usermanualCr8.5 usermanual
Cr8.5 usermanual
 
Introduction à la programmation C#
Introduction à la programmation C#Introduction à la programmation C#
Introduction à la programmation C#
 
Learn ASP
Learn ASPLearn ASP
Learn ASP
 
Basic c#
Basic c#Basic c#
Basic c#
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
What's new in C# 6 - NetPonto Porto 20160116
What's new in C# 6  - NetPonto Porto 20160116What's new in C# 6  - NetPonto Porto 20160116
What's new in C# 6 - NetPonto Porto 20160116
 
The Little Wonders of C# 6
The Little Wonders of C# 6The Little Wonders of C# 6
The Little Wonders of C# 6
 
C# - Part 1
C# - Part 1C# - Part 1
C# - Part 1
 
Crystal Report
Crystal ReportCrystal Report
Crystal Report
 
Data Structure In C#
Data Structure In C#Data Structure In C#
Data Structure In C#
 
C#.NET
C#.NETC#.NET
C#.NET
 
Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)Why Java Sucks and C# Rocks (Final)
Why Java Sucks and C# Rocks (Final)
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# Introduction
 
Crystal reports seminar
Crystal reports seminarCrystal reports seminar
Crystal reports seminar
 
tybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notestybsc it asp.net full unit 1,2,3,4,5,6 notes
tybsc it asp.net full unit 1,2,3,4,5,6 notes
 
C# Crystal Reports
C# Crystal ReportsC# Crystal Reports
C# Crystal Reports
 
C#/.NET Little Pitfalls
C#/.NET Little PitfallsC#/.NET Little Pitfalls
C#/.NET Little Pitfalls
 
C#/.NET Little Wonders
C#/.NET Little WondersC#/.NET Little Wonders
C#/.NET Little Wonders
 

Similaire à Java New Programming Features

javasebeyondbasics
javasebeyondbasicsjavasebeyondbasics
javasebeyondbasics
webuploader
 
C# for C++ programmers
C# for C++ programmersC# for C++ programmers
C# for C++ programmers
Mark Whitaker
 
Effective Java Second Edition
Effective Java Second EditionEffective Java Second Edition
Effective Java Second Edition
losalamos
 
The Kotlin Programming Language
The Kotlin Programming LanguageThe Kotlin Programming Language
The Kotlin Programming Language
intelliyole
 
Javase5generics
Javase5genericsJavase5generics
Javase5generics
imypraz
 
New features and enhancement
New features and enhancementNew features and enhancement
New features and enhancement
Rakesh Madugula
 

Similaire à Java New Programming Features (20)

Java 1.5 - whats new and modern patterns (2007)
Java 1.5 - whats new and modern patterns (2007)Java 1.5 - whats new and modern patterns (2007)
Java 1.5 - whats new and modern patterns (2007)
 
Jdk1.5 Features
Jdk1.5 FeaturesJdk1.5 Features
Jdk1.5 Features
 
javasebeyondbasics
javasebeyondbasicsjavasebeyondbasics
javasebeyondbasics
 
C# for C++ programmers
C# for C++ programmersC# for C++ programmers
C# for C++ programmers
 
JAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programmingJAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programming
 
JAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programmingJAVA Tutorial- Do's and Don'ts of Java programming
JAVA Tutorial- Do's and Don'ts of Java programming
 
Generic Types in Java (for ArtClub @ArtBrains Software)
Generic Types in Java (for ArtClub @ArtBrains Software)Generic Types in Java (for ArtClub @ArtBrains Software)
Generic Types in Java (for ArtClub @ArtBrains Software)
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
Tiger: Java 5 Evolutions
Tiger: Java 5 EvolutionsTiger: Java 5 Evolutions
Tiger: Java 5 Evolutions
 
final year project center in Coimbatore
final year project center in Coimbatorefinal year project center in Coimbatore
final year project center in Coimbatore
 
Effective Java Second Edition
Effective Java Second EditionEffective Java Second Edition
Effective Java Second Edition
 
Lezione03
Lezione03Lezione03
Lezione03
 
Lezione03
Lezione03Lezione03
Lezione03
 
Java generics
Java genericsJava generics
Java generics
 
The Kotlin Programming Language
The Kotlin Programming LanguageThe Kotlin Programming Language
The Kotlin Programming Language
 
Csharp4 generics
Csharp4 genericsCsharp4 generics
Csharp4 generics
 
Javase5generics
Javase5genericsJavase5generics
Javase5generics
 
New features and enhancement
New features and enhancementNew features and enhancement
New features and enhancement
 
Java tut1
Java tut1Java tut1
Java tut1
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Java New Programming Features

  • 1.
  • 2.
  • 3. Methods can be defined to operate on unknown types of Objects without using ‘Objects’ class. And no type casting is required.
  • 4. Big advantage: collections are now type safe.2 Example : ‘Generify ‘ your Java classes – public class Box<T> { private T t ; public void add(Tt ) { this.t = t; } public T get() { return t; } } How to use this : Box<Integer> integerBox = new Box<Integer>(); … integerBox.add(new Integer(25)); //typesafe only Integers can be passed Integer myInt = integerBox.get() //no typecasting required T is a type parameter that will be replaced by a real type. T is the name of a type parameter. This name is used as a placeholder for the actual type that will be passed to Gen when an object is created.
  • 5. Generics – Example 2 3 Another Example public class GenericFactory<E> { Class theClass = null; public GenericFactory(Class theClass) { this.theClass = theClass; } public E createInstance() throws …{ return (E) this.theClass.newInstance(); } Usage : Creates a Factory of Generic Type GenericFactory<MyClass> factory = new GenericFactory<MyClass>(MyClass.class); MyClass myClassInstance = factory.createInstance();
  • 6. Generics – Generics in Methods 4 static <T> void fromArrayToCollection(T[] a, Collection<T> c) { for (T o : a) { c.add(o); } } static <T> Collection<T> fromArrayToCollectionv2(T[] a) { Collection<T> c = new ArrayList<T>(); for (T o : a) { c.add(o); } return c ; } One more Interesting Example… public <T> T ifThenElse(boolean b, T first, T second) { return b ? first : second; }
  • 7. Generics – With Collections 5 Lists List<String> list = new ArrayList<String>(); list.add(“A String”); String string2 = list.get(0); // no type casting. Maps (can define multiple typed parameters) Map<String, String> map = new HashMap<String, String>();map.put ("key1", "value1");map.put ("key2", "value2");String value1 = map.get("key1"); Iterating a Generic List: List<String> list = new ArrayList<String>(); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ String aString = iterator.next(); } Backward Compatibility List list = new ArrayList<String>(); Nested Generic Types List<List<String>> myListOfListsOfStrings;
  • 8. Generics – Diving Deeper 6 Generics and Subtyping List<String> ls = new ArrayList<String>(); List<Object> lo = ls; //illegal won’t compile!! What’s the Problem ? lo.add(new Object()); String s = ls.get(0); // attempts to assign an Object to a String! In other words Collection<Object> is not a supertype of all the types of collections To cope with this sort of situation use Wildcards static void printCollection2(Collection<?> c) { // Collection<?> -“collection of unknown” for (Object e : c) { System.out.println(e); } } Limitation in using unbounded wildcard Any method that takes Generic type of argument cannot be invoked : Collection<?> c = new ArrayList<String>(); c.add(new Object()); // compile time error
  • 9.
  • 10. A wildcard with a lower bound looks like " ? super Type " Example : public class Collections { public static <T> void copy ( List<? super T> dest, List<? extends T> src) { // uses bounded wildcards for (int i=0; i<src.size(); i++) dest.set(i,src.get(i)); } } List<Object> output = new ArrayList< Object >(); List<Long>    input = new ArrayList< Long >(); ... Collections.copy(output,input);  // fine List<String> output = new ArrayList< String >(); List<Long>    input = new ArrayList< Long >(); ... Collections.copy(output,input);  // error 
  • 11.
  • 12.
  • 13.
  • 14. Enum - Example 11 How to define them .. public enum Flavor { CHOCOLATE(100), //declare all the possible values first. VANILLA(120), STRAWBERRY(80); private int fCalories; // can have state (member variables) int getCalories(){ // cusotm method return fCalories; } private Flavor(int aCalories){ // constructor fCalories = aCalories; } } How to use them … String getColor(Flavor flv){ // Used as normal java objects.. if(flv == Flavor.VANILLA) // “==“ can be used for value comparison return “White” ; ……. switch(flv) { case VANILLA : // You can use enums as case labels …… } String color = getColor(Flavor.VANILLA) // no constructor only constant values.
  • 15.
  • 16. These can be passed around as Java objects.
  • 17. Constructors are never invoked outside the Enums (no new operator)
  • 18. Enums are implicitly final subclasses of java.lang.Enum
  • 19.
  • 20. Methods come built in with enums to do do things like convert enums names to ordinals, and combos with enumset.
  • 21. You can attach additional fields and code to enum constants.
  • 22. enums are type safe. With Strings all your items in all categories are the same type. There is nothing to stop you from feeding a fruit category to an animal parameter.
  • 23.