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以增加ID
你不能。这是一个局部变量。
这也不是静态方法,它是一个静态块。它是在第一次将类加载到内存中时执行的,而不是之后执行。如果要保留该值,请将代码更改为此:
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();
}
并像调用其他任何方法一样调用它。
在这种方法中,我们必须写这个:
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));
}