Post on 16-Feb-2016
description
transcript
Advanced Programming in Java
Sadegh AliakbarySharif University of Technology
Fall 2012
Sharif University of Technology 2
AgendaEnumerationsStatic ImportAnnotation
Fall 2012
Enumerations
Sharif University of Technology 4
EnumerationsSuppose you have a class with a few
instancesExample:
Student Type : <BS, MS, PhD>SMS Status : <Sent, Delivered, Not Delivered,
Not Sent>Color : <Blue, Green, Black, Red>
How do you implement it?The class should not be inheritedThe instances are limited: no further instances
Fall 2012
Sharif University of Technology 5
An Implementationfinal class Color{
public static final Color Black = new Color(1);public static final Color Blue = new Color(2);public static final Color Green = new Color(3);public static final Color Red = new Color(4);
private int color;private Color(int i) {this.color = i;}
}
Fall 2012
Applications of a private constructor
Sharif University of Technology 6
Java enumJava introduces enumerations for this
purposeEnumerated Data TypeA simple classenum keyword instead of class or interfaceComma seperated enum instancesenum instances are constantenum Color {
Black, Blue, Green, Red}
Fall 2012
Sharif University of Technology 7
Enumenum Color {Black, Blue, Green, Red
}
final class Color{ public static final Color Black = new Color(); public static final Color Blue = new Color(); public static final Color Green = new Color(); public static final Color Red = new Color();
}Fall 2012
Sharif University of Technology 8
Enum Sampleenum Shape {
Rectangle, Circle, Square}
enum StudentType{BS, MS, PhD
}
Fall 2012
Sharif University of Technology 9
Using EnumsColor color = Color.Black;Shape shape = Shape.Circle;show(shape, color);...private static void show (Shape shape, Color color) {//show a shape with this color...
}Fall 2012
Sharif University of Technology 10
Enum Characteristicsenum types are implicitly final
Can not be a super-classBecause they declare constants that should not
be modifiedInstances are constants
enum constants are implicitly public, static and final
No new instances can be createdobject instantiation of enum types with
operator new results in a compilation error.
Fall 2012
Sharif University of Technology 11
EnumEnum can be a more complex classWith many constructorsAnd fieldsAnd methods
Fall 2012
enum Shape {Rectangle(1), Circle(2), Square(3);
private int number;Shape(int i){ number= i;}public int getNumber(){ return number;}
}
Shape shape = Shape.Circle;print (shape.getNumber());
shape = Shape.valueOf("Rectangle");print(shape.getNumber());
Shape[] shapesArray = Shape.values();
for (Shape s : shapesArray) {print(s.name());
}
try{shape = Shape.valueOf("Pyramid");
}catch(Exception exp){print("Pyramid is not included in Shape");
}
Fall 2012
Sharif University of Technology 13
Static ImportIn order to access static membersQualify references with the class they came from. For example:
double r = Math.sin(Math.PI * theta);static import allows unqualified access to static members without inheriting from the type containing the static
membersimport static java.lang.Math.PI;
orimport static java.lang.Math.*;double r = sin(PI * theta);
Fall 2012
Sharif University of Technology 14
AnnotationAn annotation is a special form of metadata Added to Java source codeClasses, methods, variables, parameters and
packages may be annotatedUnlike Javadoc tags, Java annotations can be
reflective They can be embedded in class files (byte code)May be retained by the Java VM at run-timeExample
@Override, @Deprecated, @ SuppressWarnings, …
Fall 2012
Ergonomy
Sharif University of Technology 16Fall 2012
Sharif University of Technology 17Fall 2012
Sharif University of Technology 18Fall 2012
Sharif University of Technology 19Fall 2012
Sharif University of Technology 20Fall 2012