У меня есть три класса модели MyApp, Product и ProductDetails. Я пытаюсь установить значение в ProductDetails, но получаю исключение с нулевым указателем. Может ли кто-нибудь помочь мне, что я делаю здесь не так:
MyApp.java
public class MyApp {
private Product product;
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
}
Product.java
public class Product {
private ProductDetails details;
public ProductDetails getDetails() {
return details;
}
public void setDetails(ProductDetails details) {
this.details = details;
}
}
ProductDetails.java
public class ProductDetails {
private String productName;
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
}
Test.java
public class Test {
public static void main(String[] args) {
MyApp m = new MyApp();
m.getProduct().getDetails().setProductName("testProduct");
System.out.println("Name : " + m.getProduct().getDetails().getProductName());
}
}
Я получаю исключение ниже: Исключение в потоке "main" java.lang.NullPointerExceptio в Test.main (Test.java:7)




Перед использованием необходимо инициализировать product.details и details.productName. Например:
m.getProduct().setDetails(new ProductDetails());
m.getProduct().getDetails().setProductName(...);
А что насчет продукта в переменной m?
Да, это можно сделать несколькими способами. Это был лишь один пример того, как можно решить проблему.
Это верно. Хотя для этого варианта использования было бы более полезно создавать экземпляры в конструкторах.