爪哇 - 制作一个静态引用非静态字段列表(Java - making a static refere

2019-06-23 17:40发布

我只是在尝试,发现当我运行的滚动码,它不编译,我想不通为什么。

我的IDE说“不能让一个静态引用非静态字段列表”,但我真的不明白为什么这是。 此外还有什么它适用于,即:它只是私有变量和方法,或者过于为什么?:

public class MyList {

    private List list;

    public static void main (String[] args) {
        list = new LinkedList();
        list.add("One");
        list.add("Two");
        System.out.println(list);
    }

}

然而,当我将其更改为以下,它的工作:

public class MyList {

    private List list;

    public static void main (String[] args) {
        new MyList().exct();
    }

    public void exct() {
        list = new LinkedList();
        list.add("One");
        list.add("Two");
        System.out.println(list);
    }

}

Answer 1:

静态字段是跨类的所有实例共享领域。
非静态/成员字段是特定于类的一个实例。

例:

public class Car {
  static final int tireMax = 4;
  int tires;
}

这使得任何给定的车可以有任意数量的轮胎感,但最大数量是所有汽车一样。
如果我们做了tireMax变多变,修改值将意味着所有汽车现在可以有更多的(或更少)的轮胎。

你的第二个例子中成功运作的原因是,你检索list新MYLIST实例。 在第一种情况下,你是在静态情况下,而不是在一个特定实例的情况下,这样的变量list不能访问。



Answer 2:

在第一个例子,你是从静态的内容,这是不可能的调用非静态字段。 在第二个你MYLIST对象,它可以访问该字段上打电话分机功能。



文章来源: Java - making a static reference to the non-static field list