有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在初始化第二个构造函数中的最后一个变量时遇到问题

我试图在我的类中使用2个构造函数,通过使用第一个构造函数来设置第二个构造函数,但这样做会导致错误,“空白的最终字段值可能尚未初始化”,即使我在第一个构造函数中没有得到错误。这是我的密码:

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) 个答案

  1. # 1 楼答案

    using reference variable keyword "this" as below

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

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