首页 > 解决方案 > 如何打印枚举描述

问题描述

我正在创建一个 Java 应用程序,我使用枚举来创建电影类别。当我输入时,MovieCategory.WAR我想查看War movie(My description)而不是WAR. 这怎么可能?我试过MovieCategory.WAR.getDescription()但没有用。

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));
(...)

标签: javaenums

解决方案


枚举正常工作:

  public static void main(String[] args) {
    // Displays: Comedy
    System.out.println(COMEDY.getDescription());
    // Displays: COMEDY
    System.out.println(COMEDY);
  }

或者,也许您希望toString使用该方法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);
  }
}

更新#3:似乎问题出在 JSON 响应上。如果要返回描述,可以使用注释getDescription方法@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);
  }
}

推荐阅读