ArrayList没有在java中正确初始化

时间:2013-04-06 04:42:12

标签: java arraylist

我在我的申请中使用ArrayList 我在全球范围内声明了List<Product> productList = new ArrayList<Product>();,但产品未添加到此列表中,因为productList显示为null而不是空数组列表。

以下是我的代码:

Map<String, List<Product>> productListMap = productSuggestBox.getValueMap();

List<Product> queriedProductList = productListMap.get("productList");

long productId = Long.valueOf(productSuggestBoxValue);

for (Product product : queriedProductList) {
    if (product.getId() == productId) {
        productList.add(product);
        break;
    }
}

1 个答案:

答案 0 :(得分:1)

这是尝试将您提供的片段中的代码结构拼凑在一起:

public class SalesInvoiceWidget extends Composite { 
    List<Product> productList = new ArrayList<Product>();

    // ...

    private void someMethod() {
        Map<String, List<Product>> productListMap = 
                productSuggestBox.getValueMap();

        List<Product> queriedProductList = productListMap.get("productList");

        long productId = Long.valueOf(productSuggestBoxValue);

        for (Product product : queriedProductList) {
            if (product.getId() == productId) {
                productList.add(product);
                break;
            }
        }

假设上面的重构是完全正确的,那么productList可以是null的唯一方法是代码中的某个地方(上面没有显示!),你分配 nullproductList

另一种可能的解释是,在您看到productList时,null的不同声明属于范围;例如它可能是一个局部变量或名为productList的方法参数 shadowing “全局”声明。


请注意,如果以前非空,则Java 中的变量不能神奇地变为null。分配给它的东西,或者它是一个不同的变量。没有其他似是而非的解释......假设您使用的是纯Java。