java内部类中可以更改全局变量的值吗
如果一个类(A)中定义了一个private的全局属性,然后我再此类中的一个内部类(B)里给这个属性赋值。之后我再在一个类(C)中调用此属性的get方法,不知道为什么得到的...
如果一个类(A)中定义了一个private的全局属性,然后我再此类中的一个内部类(B)里给这个属性赋值。之后我再在一个类(C)中调用此属性的get方法,不知道为什么得到的是Null,而不是我之前设置的值。求高手指教。
展开
3个回答
展开全部
在java中,静态的东西,在内存中时默认实例化的,在类加载时就会放在内存中。你在类A中定义了一个静态全局变量,在构造类A的对象或者使用类A的时候,类A才会被加载。加载的同时各个属性会被初始化(初始化在内存中表现为初始化成00000000...。对于int等基本数据类型,是0;对于对象等类型,是null)。在未使用类B之前,类B中的内容是不会被加载的。因此,在类C中调用类A的get方法时,类A加载,虽然类B是类A的内部类,但并没有使用它,因此不会被加载,类A中的这个属性只是被初始化,但并没有在类B中赋初值。只有你使用类B时,才会加载B,才会给这个属性赋值。
你最好能把一个示例代码贴出来,这样可以更好地看出问题。
你最好能把一个示例代码贴出来,这样可以更好地看出问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询