在第二个构造函数中初始化最终变量时出现问题

时间:2019-06-09 22:20:12

标签: java final

我正在尝试通过使用第一个构造函数设置第二个构造函数在类中使用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 :(得分:0)

  

如下所示使用参考变量关键字“ this”

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

    }

您遇到的另一个问题是“ ID”变量声明为“ final”,这意味着无法在两个不同的区域中初始化 删除final关键字或将其初始化一次。