从非静态字段更改静态引用?

时间:2012-12-04 06:04:56

标签: java string-length

我有一个私有的int数组,我需要以某种方式找到长度,但我不能在静态类下执行此操作。我必须保持类静态,是否可以添加另一种方法来将a.length更改为其他方法?

问题是由a.length引起的。

private int [] a;

public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {

                for(int i=0; i<a.length; i++) {
                  if (otherSet.isSet(i))
                    nextSet.insertElement(i);
                }

                return nextSet;
              }

4 个答案:

答案 0 :(得分:1)

正如我所说的那样使用

public int lenghtOfArray(){
      return this.a.lenght;
}

并将您的方法更改为

public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
      for(int i=0; i<otherSet.length(); i++) {
           if (otherSet.isSet(i))
                nextSet.insertElement(i);
           }
           return nextSet;
      }

答案 1 :(得分:0)

也可以使a为静态,或者将您的类的实例作为参数传递给union方法,并访问该实例的a字段。

答案 2 :(得分:0)

您需要引用对象的字段:

private int [] a;

public static IntegerSet union(IntegerSet otherSet, IntegerSet nextSet) {
    . . .
    for(int i=0; i<otherSet.a.length; i++) {
        . . .
    }
}

答案 3 :(得分:0)

您不是指静态中的a.length;你是从静态方法做的。静态方法永远不能引用非静态成员变量。

看起来好像你有一个bug。你为什么反对a.length?您应该询问aotherSet的{​​{1}}成员。