Issues with pattern variables inside Enum
Francois Green
francois.green at gmail.com
Tue Oct 5 23:04:17 UTC 2021
I don't know if it should, but this works:
public class PatNum {
public static void main(String[] args) {
enum Suit {
Heart("♡"), Club("♣"), Spade("♠"), Diamond("♢");
String symbol;
Suit(String symbol) {
this.symbol = symbol;
}
public String color() {
return switch(this) {
case Club, Spade -> "Black";
case Diamond, Heart -> "Red";
};
}
}
for (var suit : Suit.values()) System.out.println(suit.color());
}
}
Trying to use a pattern variable causes an error:
public class PatNum {
public static void main(String[] args) {
enum Suit {
Heart("♡"), Club("♣"), Spade("♠"), Diamond("♢");
String symbol;
Suit(String symbol) {
this.symbol = symbol;
}
public String color() {
return switch(this) {
case Club c -> "Red";
case Spade s -> "Black";
case Diamond d -> "Red";
case Heart h -> "Red";
};
}
}
for (var suit : Suit.values()) System.out.println(suit.color());
}
}
PatNum.java:16: error: cannot find symbol
case Club c -> "Red";
^
symbol: class Club
location: class Suit
PatNum.java:17: error: cannot find symbol
case Spade s -> "Black";
^
symbol: class Spade
location: class Suit
PatNum.java:18: error: cannot find symbol
case Diamond d -> "Red";
^
symbol: class Diamond
location: class Suit
PatNum.java:19: error: cannot find symbol
case Heart h -> "Red";
^
symbol: class Heart
location: class Suit
Note: PatNum.java uses preview features of Java SE 17.
Note: Recompile with -Xlint:preview for details.
4 errors
error: compilation failed
More information about the amber-dev
mailing list