JAVA里面定义了一个arraylist 加了值后,怎么在另一个类中调用加了值后的list
static ArrayList<BOOK> list=new ArrayList<BOOK>() ;
public void jia() {
BOOK b1 = new BOOK("1", "三国", "25");
BOOK b2 = new BOOK("2", "水浒", "26");
BOOK b3 = new BOOK("3", "西游", "27");
BOOK b4 = new BOOK("4", "红楼", "30");
list.add(b1);
list.add(b2);
list.add(b3);
list.add(b4);
}
public ArrayList<BOOK> getList() {
return list;
}
public void setList(ArrayList<BOOK> list) {
this.list = list;
}
这样在一个类中为数组加了值 在别的类中通过getlist获取到的list.size的长度为什么是0
怎么样写代码能在别的类中调用已经加了元素的list。 求大神补充代码。 展开
import java.util.ArrayList;
import java.util.List;
public class Fangfa {
static ArrayList<BOOK> list = new ArrayList<BOOK>();
public void jia() {
BOOK b1 = new BOOK("1", "三国", "25");
BOOK b2 = new BOOK("2", "水浒", "26");
BOOK b3 = new BOOK("3", "西游", "27");
BOOK b4 = new BOOK("4", "红楼", "30");
list.add(b1);
list.add(b2);
list.add(b3);
list.add(b4);
}
public ArrayList<BOOK> getList() {
return list;
}
public void setList(ArrayList<BOOK> list) {
this.list = list;
}
}
class BOOK {
private String id;
private String name;
private String no;
public BOOK(String id, String name, String no) {
this.id = id;
this.name = name;
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
class Test{
public static void main(String args[]){
Fangfa ff = new Fangfa();
ff.jia();//先添加值
List<BOOK> list = ff.getList();
for (BOOK book: list){
System.out.println("book.getId()="+book.getId()+" |book.getName()="+book.getName()+" |book.getNo()="+book.getNo());
}
}
}
推荐于2017-12-15
在调用getList() 方法之前先调用jia()方法,这是最简单的解决办法。
奇葩一点就把加值代码放到public ArrayList<BOOK> getList()方法里的前排。
如果已经学了构造方法就最好了。不过我记得我学到构造方法后建你这样的类构造方法代码都自动生成了,直接填充方法类容就ok了,所以我估计没还没学到
这是编译错误。
最简单的吧,不用改你之前的代码。
你把jia()方法在getList()方法的第一排调用,这样你调用getList()的时候等于也调用了加值方法
亲,你的问题出在,你在获取之前,你是没有给你的list加值啊,虽然你提供了加值的方法,但是你没有调用啊。
你可以添加一个构造方法
public fangfa(){
jia();
}
这样就可以。
还有一种方法就是在调用getList()之前调用一次jia();方法试试就会有值了哈。
希望可以帮助到你,望采纳,谢谢!