diff --git a/classpath/java/lang/Enum.java b/classpath/java/lang/Enum.java index 5d9b65b655..7d8ab4fc71 100644 --- a/classpath/java/lang/Enum.java +++ b/classpath/java/lang/Enum.java @@ -35,4 +35,8 @@ public abstract class Enum> { public int ordinal() { return ordinal; } + + public String toString() { + return name; + } } diff --git a/classpath/java/lang/Object.java b/classpath/java/lang/Object.java index f98afa5bfe..3acb15833a 100644 --- a/classpath/java/lang/Object.java +++ b/classpath/java/lang/Object.java @@ -2,7 +2,7 @@ package java.lang; public class Object { protected Object clone() throws CloneNotSupportedException { - if (this instanceof Cloneable) { + if ((this instanceof Cloneable) || getClass().isArray()) { return clone(this); } else { throw new CloneNotSupportedException(getClass().getName()); diff --git a/test/Enums.java b/test/Enums.java new file mode 100644 index 0000000000..9cb397fbc3 --- /dev/null +++ b/test/Enums.java @@ -0,0 +1,39 @@ +public class Enums { + private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }; + private enum Rank { ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, + NINE, TEN, JACK, QUEEN, KING }; + private enum Person { Joe(4), Mike(5) ; + private final int age; + private Person(int age) { + this.age = age; + } + public int getAge() { + return age; + } + }; + + private static void expect(boolean v) { + if (! v) throw new RuntimeException(); + } + + private static boolean checkFaceCard(Rank r) { + switch (r) { + case ACE: + case JACK: + case QUEEN: + case KING: + return true; + } + return false; + } + + public static void main(String[] args) { + expect(Suit.CLUBS.ordinal() == 0); + expect(Suit.valueOf("DIAMONDS") == Suit.DIAMONDS); + System.out.println(Suit.SPADES); + expect(Suit.values()[1] == Suit.HEARTS); + expect(!checkFaceCard(Rank.FIVE)); + expect(checkFaceCard(Rank.KING)); + expect(Person.Mike.getAge() == 5); + } +}