如何编写包含公共变量的类似结构的类,然后能够在不使用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;
}
}
答案 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());
}
}