Enum values() and valueOf() Methods
In this chapter you will learn:
- How to use use values() and valueOf() from enum
- Overriding toString() to return a Token constant's value
- Assign a different behavior to each constant
Use values() and valueOf()
All enumerations automatically contain two predefined methods: values()
and valueOf()
.
Their general forms are:
public static enum-type[ ] values()
public static enum-type valueOf(String str)
The values()
method returns an array that contains a list of the enumeration constants.
The valueOf()
method returns the enumeration constant whose value corresponds to the string passed in str.
In both cases, enum-type is the type of the enumeration.
The following program demonstrates the values()
and valueOf()
methods:
enum Direction {// j a v a 2 s . c o m
East, South, West, North
}
public class Main {
public static void main(String args[]) {
Direction dir;
// use values()
Direction all[] = Direction.values();
for (Direction a : all)
System.out.println(a);
System.out.println();
// use valueOf()
dir = Direction.valueOf("South");
System.out.println(dir);
}
}
Overriding toString() to return a Token constant's value
enum Token {//jav a 2 s . c o m
IDENTIFIER("ID"), INTEGER("INT"), LPAREN("("), RPAREN(")"), COMMA(",");
private final String tokValue;
Token(String tokValue) {
this.tokValue = tokValue;
}
@Override
public String toString() {
return tokValue;
}
}
public class Main{
public static void main(String[] args) {
for (int i = 0; i < Token.values().length; i++){
System.out.println(Token.values()[i].name() + " = " + Token.values()[i]);
}
}
}
Assign a different behavior to each constant
We can assign different value for each constant in an enum
.
enum Converter {/*from j ava 2 s .c om*/
DollarToEuro("Dollar to Euro") {
@Override
double convert(double value) {
return value * 0.9;
}
},
DollarToPound("Dollar to Pound") {
@Override
double convert(double value) {
return value * .8;
}
};
Converter(String desc) {
this.desc = desc;
}
private String desc;
@Override
public String toString() {
return desc;
}
abstract double convert(double value);
}
public class Main{
public static void main(String[] args) {
System.out.println(Converter.DollarToEuro + " = " + Converter.DollarToEuro.convert(100.0));
System.out.println(Converter.DollarToPound + " = " + Converter.DollarToPound.convert(98.6));
}
}
Next chapter...
What you will learn in the next chapter:
Home » Java Tutorial » Class Creation