0
public static List<Movie> movies;

static {
    movies = new ArrayList<>();
    movies.add(new Movie(1, "Fprd vs Ferrari", "Movie on Racing", "abcd", "xyz"));
    movies.add(new Movie(2, "F2", "Comedy Movie", "Venkatesh", "Tamanna"));
    movies.add(new Movie(3, "Titanic", "Movie", "Hero", "Heroine"));
    Movie max = Collections.max(movies, Comparator.comparingInt(Movie::getId));
    int maxId = max.getId();

}
public Result insert(Http.Request request) {
        JsonNode jsonNode = request.body().asJson();
        if (jsonNode == null) {
            return badRequest("insufficient movie information");
        }
                Movie movie = Json.fromJson(jsonNode, Movie.class);
               movies.add(movie);
               return ok(Json.toJson(movie));

    }

这是插入方法。现在我想访问那个 maxId 变量来插入方法。任何人都可以告诉我如何清除这个以增加 id

4

2 回答 2

0

在这个方法中,我们必须这样写:

public Result insert(Http.Request request) {
        JsonNode jsonNode = request.body().asJson();
        if (jsonNode == null) {
            return badRequest("insufficient movie information");
        }
        String movieName = jsonNode.get("movieName").asText();
        boolean existmovie = containName(movieName);
        Movie movie = Json.fromJson(jsonNode, Movie.class);
        int nextId = Collections.max(movies, Comparator.comparingInt(Movie::getId)).getId();
        movie.setId(++nextId);
        if (existmovie == true) {
            return badRequest("Movie Already exist");
        }
        movies.add(movie);
        return ok(Json.toJson(movie));

    }
于 2020-01-09T10:50:29.097 回答
0

你不能。这是一个局部变量。

这也不是静态方法,而是静态块。它在类第一次加载到内存时执行,而不是在那之后。如果您想保留该值,请将您的代码更改为:

private static int maxId;

static {
    movies = new ArrayList<>();
    movies.add(new Movie(1, "Fprd vs Ferrari", "Movie on Racing", "abcd", "xyz"));
    movies.add(new Movie(2, "F2", "Comedy Movie", "Venkatesh", "Tamanna"));
    movies.add(new Movie(3, "Titanic", "Movie", "Hero", "Heroine"));
    Movie max = Collections.max(movies, Comparator.comparingInt(Movie::getId));
    maxId = max.getId();
}

编辑

您可以做的是将最后两行提取到实际方法(静态或实例方法):

public static int getMaxId() {
    Movie max = Collections.max(movies, Comparator.comparingInt(Movie::getId));
    return max.getId();
}

并像调用任何其他方法一样调用它。

于 2020-01-09T09:44:03.623 回答