Проблемы инициализации финальной переменной в моем втором конструкторе - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь использовать 2 конструктора в своем классе, используя первый конструктор для настройки моего второго конструктора, но при этом я получаю сообщение об ошибке: «Пустое конечное поле VALUE, возможно, не было инициализировано», хотя я и не Не получаю ошибку в моем первом конструкторе. Вот мой код:

public class Token implements IToken {

    private static int counter = 0;
    private final int ID;
    private TokenState state;
    private final int VALUE;
    private org.newdawn.slick.geom.Vector2f pos;


    public Token (TokenState state, int value, Vector2f pos ) {
        ID = counter;
        this.VALUE = value;
        this.state = state;
        this.pos = pos;
        counter++ ;
    }


    public Token (int value) {

        new Token(TokenState.DEFAULT, value, new Vector2f() );
        ID = counter;
        counter++;
    }

Проблема в том, что это последняя переменная. Если да, то почему?

1 Ответ

0 голосов
/ 10 июня 2019

с использованием ключевой переменной "this", как показано ниже

public Token (int value) {
 this(TokenState.DEFAULT, value, new Vector2f() );    

    }

другая проблема, с которой вы столкнулись, переменная "ID", объявленная как "final", то есть не может быть инициализирована в двух разных областях, которые вы могли бы удалить последнее ключевое слово или инициализировать его один раз.

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