как вызвать переменную stati c для не stati c метода, т.е. мне нужно вызвать переменную maxId для вставки метода - PullRequest
0 голосов
/ 09 января 2020
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

Ответы [ 2 ]

0 голосов
/ 09 января 2020

В этом методе мы должны написать это:

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

    }
0 голосов
/ 09 января 2020

Вы не можете. Это локальная переменная.

Это также не метод stati c, а блок stati c. Он выполняется в первый раз, когда класс загружается в память, а не после этого. Если вы хотите сохранить это значение, измените свой код следующим образом:

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

РЕДАКТИРОВАТЬ

Что вы можете сделать, это извлечь две последние строки в фактический метод (либо stati c или метод экземпляра):

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

и вызовите его так же, как любой другой метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...