Mycode is
JavaScript
x
public enum PartsOfSpeech2 {
n("noun"),
wp("标点"),
a("adjective"),
d("conjunction"),
;
which I want
JavaScript
public enum PartsOfSpeech2 {
n("noun"),
wp("标点"),
a("adjective"),
d("conjunction"),
%("noun");
can I hava a default value which is not in it, can it be set as a default value? because I have a type is “%”, but enum is not support %, so I want a default value to solve it
Advertisement
Answer
The default for one who holds a reference to an enum
without setting a value would be null
(either automatically in case of a class field, or set by the user explicitly).
Unfortunately you cannot override the method valueOf
for your own enum
, as it is static
.
But you can still create your methods:
JavaScript
public enum PartsOfSpeech2 {
n("noun"),
wp("标点"),
a("adjective"),
d("conjunction");
private String value;
PartsOfSpeech2(String value) {
this.value = value;
}
// declare your defaults with constant values
private final static PartsOfSpeech2 defaultValue = n;
private final static String defaultString = "%";
// `of` as a substitute for `valueOf` handling the default value
public static PartsOfSpeech2 of(String value) {
if(value.equals(defaultString)) return defaultValue;
return PartsOfSpeech2.valueOf(value);
}
// `defaultOr` for handling default value for null
public static PartsOfSpeech2 defaultOr(PartsOfSpeech2 value) {
return value != null ? value : defaultValue;
}
@Override
public String toString() { return value; }
}