【发布时间】:2013-06-14 01:34:46
【问题描述】:
我正在尝试将对象添加到列表时为什么会收到 NullPointerException 的一些实验。下面是我的代码和 StackTrace。您知道为什么当我尝试将对象添加到列表时会收到 NullPointerException 吗?
这是我的测试课。
package com.greathouse.aggregationtest;
import com.greathouse.aggregationtest.types.Composite;
import com.greathouse.aggregationtest.types.InitializedComponent;
import com.greathouse.aggregationtest.types.NullComponent;
import com.greathouse.aggregationtest.types.NullContainingComponent;
public class App
{
public static void main( String[] args )
{
System.out.println( "Testing aggregation" );
InitializedComponent initializedComponent1 = new InitializedComponent();
initializedComponent1.setInitializedString("Test Initialization 1 Successful");
InitializedComponent initializedComponent2 = new InitializedComponent();
initializedComponent2.setInitializedString("Test Initialization 2 Successful");
NullComponent nullComponent1 = null;
NullComponent nullComponent2 = null;
NullContainingComponent nulLContainingComponent1 = new NullContainingComponent();
nulLContainingComponent1.setIntendedNullString(null);
NullContainingComponent nullContainingComponent2 = new NullContainingComponent();
nullContainingComponent2.setIntendedNullString(null);
System.out.println(initializedComponent1.getInitializedString());
System.out.println(initializedComponent2.getInitializedString());
System.out.println(nullComponent1);
System.out.println(nullComponent2);
System.out.println(nulLContainingComponent1.getIntendedNullString());
System.out.println(nullContainingComponent2.getIntendedNullString());
Composite composite = new Composite();
composite.addInitializedComponents(initializedComponent1);
composite.addInitializedComponents(initializedComponent2);
composite.addNullComponent(nullComponent1);
composite.addNullComponent(nullComponent2);
composite.addNullContainingComponent(nulLContainingComponent1);
composite.addNullContainingComponent(nullContainingComponent2);
}
}
这是复合对象。组件对象是带有访问器的简单包装器。
package com.greathouse.aggregationtest.types;
import java.util.List;
public class Composite {
private List<InitializedComponent> initializedComponents;
private List<NullComponent> nullcomponents;
private List<NullContainingComponent> nullContainingComponents;
/**
* @return the initializedComponents
*/
public List<InitializedComponent> getInitializedComponents() {
return initializedComponents;
}
/**
* @return the nullComponents
*/
public List<NullComponent> getNullcomponents() {
return nullcomponents;
}
/**
* @return the nullContainingComponents
*/
public List<NullContainingComponent> getNullContainingComponents() {
return nullContainingComponents;
}
public void addInitializedComponents(InitializedComponent initializedComponent) {
this.initializedComponents.add(initializedComponent);
}
public void addNullComponent(NullComponent nullcomponent) {
this.nullcomponents.add(nullcomponent);
}
public void addNullContainingComponent(NullContainingComponent nullContainingComponent) {
this.nullContainingComponents.add(nullContainingComponent);
}
}
控制台输出。
Testing aggregation
Test Initialization 1 Successful
Test Initialization 2 Successful
null
null
null
null
Exception in thread "main" java.lang.NullPointerException
at com.greathouse.aggregationtest.types.Composite.addInitializedComponents(Composite.java:28)
at com.greathouse.aggregationtest.App.main(App.java:41)
【问题讨论】:
-
在哪一行抛出空引用异常?
-
还有stacktrace?,你在哪里初始化Composite中的属性?
-
查看右侧的相关问题。 NullPointerExceptions 并不是完全不常见的问题。请搜索阅读。
-
我同意其他人的观点。看来您没有做功课...此外,如果堆栈跟踪中有行号-请告诉我们它指向的位置!例如。做一个像
// <-- NPE thrown here (Line 28)这样的代码注释。 -
我搜索了,我找到的其他人都没有解决集合。此外,我觉得错误“..addInitializedComponents..”很好地表明了错误的来源。与其说反对,不如你帮忙。就像那些真正回答了这个问题的人一样。
标签: java collections nullpointerexception