两种语法之间的声明差异

时间:2018-08-11 08:01:46

标签: arrays declaration

Ref:Cannot reference "X" before supertype constructor has been called, where x is a final variable

class ArrayFunctions {

    //public Integer[] arrayTemplate;

    private static Scanner scanner = new Scanner(System.in);

        ArrayFunctions(int k){
            Integer[] arrayTemplate = new Integer[k] ;
        }
        .
        .
        .
    public class ArrayFunctionsImplementation{

        public static void main(String[] args) {

            ArrayFunctions newArray  = new ArrayFunctions(5);
            newArray.getIntegers(newArray.arrayTemplate);
            newArray.printIntegers(newArray.arrayTemplate);
            newArray.sortArray(newArray.arrayTemplate);
            newArray.printIntegers(newArray.arrayTemplate);

        }

    }
}

如果我使用声明// public Integer [] arrayTemplate;当前已被注释掉,我可以在公共类中访问变量“ arrayTemplate”。

但是,如果我按照下面的代码通过调用构造函数来声明变量,则无法在任何地方访问它。如果我理解正确,那么两种方法都可以声明变量,并且在我尝试访问它时,该对象已经创建。

PS:我将Integer类用于实验,而不是使用普通的int

欢呼

1 个答案:

答案 0 :(得分:0)

您当前的代码声明了urlencode构造函数的变量,因此,该变量只能在构造函数中访问。

您的注释代码声明了train-image类的成员,然后可以从该类的任何位置(或自从您将其制成ArrayFunctions以来的其他位置)进行访问。