HashMapList保持其元件一個HashMap內),當我調用添加方法此錯誤消息將被顯示在檢測控制檯」異常在線程‘主’顯示java.lang.NullPointerException「異常在線程‘主’顯示java.lang.NullPointerException添加到一個HashMapList時
public class HashMapList<K, V extends Product> extends AbstractList<Product> {
public V element;
public int index;
Map<Integer, V> map;
public HashMapList() {
super();
new HashMap<Integer, V>();
}
// Override
public void add(int index, V element) {
map.put(new Integer(index), element);
}
}
謝謝,我已經解決了第一個問題但是當我調用add方法類似==>
HashMapList<Integer, Book> list = new HashMapList<Integer, Book>();
list.add(0, new Book("physics"));
和圖書類是==>
public class Book extends Product {
public String name = null;
public Book(String name) {
super(name);
}
}
和產品類==>
public class Product implements Comparable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name = null;
public Product(String name) {
if (name == null)
throw new NullPointerException();
this.name = name;
}
public String getName() {
return name;
}
// Override
public int compareTo(Object o) {
Product product = (Product) o;
int compare = getName().compareTo(product.name);
return compare;
}
}
當我想用的System.out.println(名單)基本打印此列表; 這句話會顯示被在檢測控制檯:[[email protected],[email protected],[email protected]]
只是在上面......投擲時的產品名稱爲null就像一個新的異常時,總是把一個字符串中解釋了爲什麼這個空不應該發生在構造函數中的代碼有幾點建議。這可能聽起來微不足道,但是當你以後會閱讀你的日誌時,你會感謝你向自己解釋我們你沒有正確使用你的類和方法。這將節省你去的時候oogles「害羞是此異常拋出在這裏......」到「我傻......忘記調用構造函數之前的變量賦值」 – Newtopian 2009-08-03 05:32:44
另一個指針:而不是再在每個後代聲明名稱變量,要麼使其受到保護,要麼在產品級創建訪問者。你這樣做的方式大多數情況下都會起作用,但當代碼訪問子變量的名稱時,如果父變量包含數據,你會得到奇怪的副作用。右邊有怪異的空指針異常的好來源...反正...我的兩個分:-) – Newtopian 2009-08-03 05:35:49