2016-08-18 2 views
0

Очень часто я вижу нестационарную переменную в «вложенных» классах (не совсем внутри класса типа вложенной, но классовой композиции), доступ к которой осуществляется через точечную нотацию.Состав: Как получить доступ к нестационарным переменным с точечной записью без использования nullpointerexception?

Например.

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

getClassA() возвращает объект типа Class A и x - переменная, к которой мы стремимся получить доступ.

класс B является переменной в 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# есть авто реализовано свойство. Для приведенного выше примера, класс А будет

public Class A { 
private ClassB _classB; 

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

Так, ClassB инстанциируются как он доступен через точечную нотацию. Есть что-то подобное в Java?

Цените любую помощь по этому вопросу.

спасибо.

ответ

0

убедитесь, что объекты не нулевые, инстанцирование их

например

public class ClassA 
{ 
    ClassB classB = new ClassB(); 
} 

public class ClassB 
{ 
    ClassC classC = new ClassC(); 
} 
1

Если это точный код, который не может быть дано отсутствие метода getClassA(), вы не создаете экземпляр ClassB или C так NPE s ожидается.

Смежные вопросы