도움이 필요합니다. 4-5 시간 동안 노력한 후에, 나는 잃어버린 것이라고 생각했습니다. 같은 제목을 가지고 있지만 도움이되지 않은 다른 스레드가 2 개 있다는 것을 알고 있습니다. T.T목록에 개체를 추가 할 때 NullPointerException이 발생합니다
나는 그것을 고치는 법을 모른다. 그리고 나는 지금 미쳤다. 그래서 누군가가이 문제로 나를 도울 수 있기를 바랍니다.
누군가가 내가 그것을 고치고 내가 나쁘게 도대체 나에게 무엇을했는지 설명 할 수 있다면 나는 미래에 그것을 다시하지 않을 것이다. 나는 행복 할 것이다.
저는 OrderMapper에서 Main 함수를 만들려고하는 곳에서 3 가지 클래스를 사용하여 shopcart를 CustomerOrder 객체라고합니다. 그런 다음 목록에 Add 함수를 통해 OrderDetails 객체를 추가하지만 NullPointerException이 계속 발생합니다.
OrderDetails의 클래스 :
package model.domain;
public class OrderDetails {
private int id;
private int bookid;
private int amount;
public OrderDetails() {
}
public OrderDetails(int id, int bookid, int amount) {
this.id = id;
this.bookid = bookid;
this.amount = amount;
}
public OrderDetails(int bookid, int amount) {
this.bookid = bookid;
this.amount = amount;
}
public int getId() {
return id;
}
public int getBookid() {
return bookid;
}
public void setBookid(int bookid) {
this.bookid = bookid;
}
public int getAmount() {
return amount;
}
public void setAmount(int amount) {
this.amount = amount;
}
}
인 CustomerOrder 클래스 :
package model.domain;
import java.util.Date;
import java.util.List;
public class CustomerOrder {
private int id;
private int customerid;
private List<OrderDetails> orderDetails;
public CustomerOrder() {
}
public CustomerOrder(int id, int customerid, List<OrderDetails> orderDetails) {
this.id = id;
this.customerid = customerid;
this.orderDetails = orderDetails;
}
public CustomerOrder(int customerid, List<OrderDetails> orderDetails) {
this.customerid = customerid;
this.orderDetails = orderDetails;
}
public int getId() {
return id;
}
public int getCustomerid() {
return customerid;
}
public void setCustomer(int customerid) {
this.customerid = customerid;
}
public List<OrderDetails> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(List<OrderDetails> orderDetails, OrderDetails od) {
orderDetails.add(od);
this.orderDetails = orderDetails;
}
public void addDetails(int bookid, int amount){
OrderDetails od = new OrderDetails();
od.setBookid(bookid);
od.setAmount(amount);
this.orderDetails.add(od);
}
// public void addDetails(OrderDetails od){
// this.orderDetails.add(od);
// }
//addOrderline /addDetails
//
//od.setOne(this.ono)
//orderdetails.add(ad)
//arraylist<orderdetail> getDetails(){
// return orderDetails;
//}
}
OrderMapper 클래스 : 내가 처음 널은 널에서 아는 곳
package model.domain;
import java.util.ArrayList;
import java.util.List;
public class OrderMapper {
public CustomerOrder createShopcart(int customerid, List<OrderDetails> orderDetails){
return (new CustomerOrder(customerid, orderDetails));
}
public static void main(String[] args) {
OrderMapper om = new OrderMapper();
OrderDetails ed = new OrderDetails(1, 2);
//List<OrderDetails> orderDetails = null;
// // orderDetails = ed;
//orderDetails.add(0, ed));
CustomerOrder shopcart = new CustomerOrder();
System.out.println(shopcart.getOrderDetails());
shopcart.setCustomer(1);
shopcart.addDetails(1, 3);
shopcart.addDetails(3, 2);
shopcart.addDetails(2, 2);
System.out.println(shopcart.getOrderDetails());
// CustomerOrder shopcart = om.createShopcart(1, null);
// System.out.println(shopcart.getOrderDetails());
// OrderDetails od = new OrderDetails(1, 2);
// shopcart.setOrderDetails(null, od);
// System.out.println(shopcart.getOrderDetails());
// shopcart.setCustomer(1);
// shopcart.addDetails(1, 1);
}
}
내가 오류는 이것이다 내가 설정하지만 추가하고 나에게 NullPointerException을 가져옵니다. 당신이 shopcart.addDetails 전화 따라서 때 ... 당신은 당신의 객체에게 목록을 제공하지
null
Exception in thread "main" java.lang.NullPointerException
at model.domain.CustomerOrder.addDetails(CustomerOrder.java:68)
at model.dataaccess.OrderMapper.main(OrderMapper.java:155)
안녕 Blogbeard, 나는 그것을 읽었습니다하지만 난 어디로 나는 아직도하지 않는 잘못된. 나는 다른 것들을 시도한 후에도 내 코드를 고칠 수 없다. : | – user9120338
'new CustomerOrder()'는'orderDetails'를'null'으로 설정하고'id'와'customerid'를'0'으로 설정합니다. 아마 그 생성자를 지우고 항상이 필드들을 적절히 초기화하는 다른 생성자를 사용해야 만합니다. – dimo414
또는'private List orderDetails = new ArrayList <>();'를 사용하면 기본적으로 필드가 null이 아닌 값으로 초기화됩니다. –
dimo414