Im creating a Java application, I used enum to create movie category. When I input MovieCategory.WAR
I would like to see War movie(My description)
instead of WAR
. How is it possible? I tried MovieCategory.WAR.getDescription()
but does’t work.
public enum MovieCategory { COMEDY("Comedy"), HORROR("Horror"), SCIFI("Sci-Fi"), ACTION("Action movie"), ROMANTIC("Romantic"), CLASSIC("Classic"), WAR("War movie"); private final String description; MovieCategory(String description) { this.description = description; } public String getDescription() { return description; } }
public class MovieManager { private List<Movie> movieList; public MovieManager() { this.movieList = new ArrayList<>(); movieList.add(new Movie("Simple movie", MovieCategory.WAR,"Testing description.",167,12)); (...)
Advertisement
Answer
The enum works correctly:
public static void main(String[] args) { // Displays: Comedy System.out.println(COMEDY.getDescription()); // Displays: COMEDY System.out.println(COMEDY); }
Or, maybe you want the toString
method to use description
?
public enum MovieCategory { COMEDY("Comedy"); private final String description; MovieCategory(String description) { this.description = description; } public String getDescription() { return description; } @Override public String toString() { return getDescription(); } public static void main(String[] args) { // Displays: Comedy System.out.println(COMEDY.getDescription()); // Displays: Comedy System.out.println(COMEDY); } }
UPDATE #3: It seems the issue is the JSON response. If you want the description to be returned, you can annotate the getDescription
method wtih @JsonValue
.
import com.fasterxml.jackson.annotation.JsonValue; public enum MovieCategory { WAR("War movie"); private final String description; MovieCategory(String description) { this.description = description; } @JsonValue public String getDescription() { return description; } @Override public String toString() { return getDescription(); } public static void main(String[] args) { // Displays: Comedy System.out.println(WAR.getDescription()); // Displays: Comedy System.out.println(WAR); } }