gpt4 book ai didi

java - 组合:如何使用点表示法访问非静态变量而不出现空指针异常?

转载 作者:行者123 更新时间:2023-12-01 09:35:22 29 4
gpt4 key购买 nike

我经常看到“嵌套”类中的非静态变量(不完全是内部类的嵌套,而是类组合)通过点表示法访问。

例如。

int a = getClassA().classB.classC.x; where 

getClassA() 返回一个 Class A 类型的对象,x 是我们感兴趣访问的变量。

classB是ClassA中的一个变量。

classC是ClassB中的一个变量。

x是ClassC中的变量。

但是,当我尝试重新创建类似的测试场景时,我收到 NullPointerException 错误。

代码

public class Main() 
{
public static void main(String[] args) {

int a = getClassA().classB.classC.x;
}
}

public class ClassA
{
ClassB classB;
}


public class ClassB
{
ClassC classC;
}


public class ClassC
{
int x = 1;
}

//Class Main, A, B and C are in separate files.

附加组件

在某处读到,在 C# 中有自动实现的属性。对于上面的示例,A 类将是

public Class A {
private ClassB _classB;

public ClassB classB
{
get {
if (_classB == null) _classB = new ClassB();
return _classB; }
set {_classB = value; }
}
}

因此,ClassB 在通过点表示法访问时被实例化。 Java中有类似的东西吗?

感谢对此的任何帮助。

谢谢。

最佳答案

如果这是确切的代码(由于缺少 getClassA() 方法而无法提供该代码),则无需实例化 ClassB C,因此需要 NPE

关于java - 组合:如何使用点表示法访问非静态变量而不出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39011528/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com