ok i try to play with arraylist in java awhile to experiment some thing that related my project..so i come up with a simple code like this
having 3 file...DataStruc.java , DataStrucHand.java , testcase1.java
DataStruc.java
public class DataStruc {
private String testString;
public DataStruc(String s){
this.testString = s;
}
public String getTestString() {
return testString;
}
public void setTestString(String testString) {
this.testString = testString;
}
public String toString(){
return String.format("%s",testString);
}
}
DataStrucHand.java
import java.util.ArrayList;
public class DataStrucHand {
private ArrayList<DataStruc> ds;
public void addData(String ss){
ds.add(new DataStruc(ss));
}
public ArrayList<DataStruc> getData(){
return ds;
}
}
testcase1.java
import java.util.*;
public class testcase1 {
public static void main(String args []){
DataStrucHand dsh = new DataStrucHand();
String gdata = "test";
dsh.addData(gdata);
}
}
i tried to compile it and having this error
Exception in thread "main" java.lang.NullPointerException
at DataStrucHand.addData(DataStrucHand.java:7)
at testcase1.main(testcase1.java:8)
can i know what is wrong actually? i cant even add the data...i am trying to add the data and retrieve it back by creating another testcase2.java...but than i having problems in adding now to the arraylist...my purpose is to create a temp storage to keep a specific string that can be obtain by 1 program but runs with 2 different classes..
You never assign anything to the ds
field.
DataStrucHand.java
import java.util.ArrayList;
public class DataStrucHand {
private ArrayList<DataStruc> ds; //I am null because nothing is ever new'd up here...
public void addData(String ss){
ds.add(new DataStruc(ss));
}
public ArrayList<DataStruc> getData(){
return ds;
}
}
Try it with this line:
private ArrayList<DataStruc> ds = new ArrayList<DataStruc>();
Or, you can have a constructor that will new it up if you prefer that method:
public DataStrucHand() {
ds = new ArrayList<DataStruc>();
}
您需要在ds
放置一个ArrayList<DataStruc>
实例。
You haven't instantiated the ArrayList. Write this:
public class DataStrucHand {
private ArrayList<DataStruc> ds = new ArrayList<DataStruc>();
public void addData(String ss){
ds.add(new DataStruc(ss));
}
You've never initialized ds
, so it is null when you call ds.add(new DataStruc(ss));
Add a constructor to DataStrucHand
that initializes ds, such as ds = new ArrayList<DataStruc>();
.
The problem is that your DataStrucHand
class never initializes its private field ds
, so when you try to call ds.add(...)
it fails with NullPointerException
.
In fact, the way the class looks right now, there is no way ds
can be anything else than null
.
Shortest way to fix this is to initialize ds
properly:
private final List<DataStruc> ds = new ArrayList<DataStruc>();
This way each DataStrucHand
instance is constructed with an ArrayList
inside and ds
is never null
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.