theme: Plain Jane, 3 autoscale: true
- can be empty
package com.freniche.ocp8;
public class Main {
public static void main(String[] args) {
}
}
enum Months {
}
JAN
is an object of class Months
enum Months {
JAN, FEB, MAR
}
System.out.println(JAN instanceof Months);
for (Months e: Months.values()) {
System.out.println(e.toString());
}
// true, JAN, FEB, MAR
enum Months {
JAN(31), FEB(28), MAR(31); // semicolon important here!
int numDays;
private Months(int numDays) {
this.numDays = numDays;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
// can print number of days
for (Months e: Months.values()) {
System.out.println(e.toString() + " " + e.numDays);
}
Months m = Months.valueOf("JAN"); // OK
Months m = Months.valueOf("JAn"); // java.lang.IllegalArgumentException: No enum constant
enum Months extends Object { // fails
JAN(31), FEB(28), MAR(31);
int numDays;
private Months(int numDays) {
this.numDays = numDays;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
}
@FunctionalInterface
interface Printable {
void print();
}
enum Months implements Printable {
JAN(31), FEB(28), MAR(31);
int numDays;
private Months(int numDays) {
this.numDays = numDays;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
@Override
public void print() {
}
}
enum Months {
JAN(31) { // method override for JAN
@Override
public void print() {
super.print();
}
},
FEB(28),
MAR(31) ;
int numDays;
private Months(int numDays) {
this.numDays = numDays;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
public void print() { // default implementation
}
}
enum Months {
JAN(31) {
@Override
public void print() {
}
},
FEB(28) {
@Override
public void print() {
}
},
MAR(31) {
@Override
public void print() {
}
};
int numDays;
private Months(int numDays) {
this.numDays = numDays;
}
@Override
public String toString() {
return super.toString().toLowerCase();
}
public abstract void print(); // abstract
}