(Java)访问内部类中的公共变量?

时间:2018-02-21 20:45:39

标签: java

如何编写包含公共变量的类似结构的类,然后能够在不使用getter和setter的情况下从另一个类访问它们?

我知道怎么做getter / setter但是他们只占用很多打字空间,所以我想知道是否使用内部类可以消除它?根据我的理解,静态意味着我只能有一个x变量,我不能这样做,因为我需要一个数组。

public class publicClass {
    innerclass array_inner[];

    class innerclass {
        private int x;
        innerclass(int x){this.x = x;}
        ...
    }

    public publicClass {array_inner = new innerclass[5];}

    public access_x {
       array_inner[0].x; 
    }

}

3 个答案:

答案 0 :(得分:0)

您的代码包含一堆错误,它们与访问内部类变量无关。此外,内部和嵌套是不同的概念,正如在答案中已经提到的,你错误地理解了java中的静态。无论如何,这里是更正的代码,没有编译错误:

public class PublicClass {
  Innerclass array_inner[];

  class Innerclass {
    private int x;

    Innerclass(int x) {
      this.x = x;
    }
  }

  public PublicClass() {
    array_inner = new Innerclass[5];
  }

  public void access_x() {
    System.out.println(array_inner[0].x);
  }

  public static void main(String[] args) {
    PublicClass publicClass = new PublicClass();
    publicClass.array_inner[0] = publicClass.new Innerclass(0);
    publicClass.access_x();
  }
}

输出:

0

答案 1 :(得分:0)

如果您想要访问

,必须将此变量设为静态

答案 2 :(得分:0)

这里InnClass可以通过自己的方法访问OutClass方法和属性。所以通过提供的代码滑行,它可以帮助你: -

class OutClass {    //Outer Class

    String a = "AutoSpy", b = "Beef", c = "Crunch";

    class InnClass{ //Inner Class
        int i;
        public String accessA(){
            return a;   // Accessing Outer class variable (a) inside inner class
        }
    }

    public static class StaticInnClass{
        int i;
    }

    public String combineString(){
        return a + b + c + " : Combined";    
    }
}

public class MainClass{

    public static void main(String args[]) {

        OutClass.StaticInnClass staticClass = new OutClass.StaticInnClass();
        OutClass outer = new OutClass();
        OutClass.InnClass inner = outer.new InnClass();
        System.out.println(inner.accessA());
    }
}