私は助けが必要です。 4-5時間試した後、私は失われていると思った。私は同じタイトルを持っているが、それらは助けになっていない2つの他のスレッドがあることを知っている。 T.Tリストにオブジェクトを追加するとNullPointerExceptionが発生する
私はそれを修正する方法がわからないので、今私は狂っています。だから私は誰かがこの問題で私を助けることを願っています。
誰かがそれを修正し、私が間違っていたことを私に説明すると、将来私はもう一度やりません。
私は、OrderMapperでMain関数を作成しようとしているクラスを3つ持っているので、ShopCartを別名CustomerOrderオブジェクトにしています。リストのadd関数を使ってOrderDetailsオブジェクトをListに追加しますが、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クラス:私は最初のnullはヌルから知っているどこ
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を取得する。したがって、あなたは(1、1)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のようなコールcreateShopcart(int型の得意先、リストORDERDETAILS)を作成した関数を使用してみてください、私はそれを読んだが、私はどこに行く私はまだ得ることはありません違う。私は別のものを試した後でも自分のコードを修正するように見えることはできません。 :| – user9120338
'new CustomerOrder()'は 'orderDetails'を' null'に、 'id'と' customerid'を '0'にします。おそらく、そのコンストラクタを削除して、常にこれらのフィールドを適切に初期化する他のコンストラクタを使用してください。 – dimo414
また、 'private List orderDetails = new ArrayList <>();'を実行すると、デフォルトでフィールドはnull以外の値に初期化されます。 –
dimo414