A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-1-29 11:48 编辑

public class Demo2 {
private int id;
private String name;
private List<String> list = new ArrayList();// 这里的属性为什么要这样写
public Demo2() {
  super();
  // TODO Auto-generated constructor stub
}
public Demo2(int id, String name, List<String> list) {
  super();
  this.id = id;
  this.name = name;
  this.list = list;
}
public int getId() {
  return id;
}
public void setId(int id) {
  this.id = id;
}
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
public List<String> getList() {
  return list;
}
public void setList(List<String> list) {
  this.list = list;
}
}

定义属性list  为什么要这样写 private List<String> list = new ArrayList();

5 个回复

倒序浏览
private List<String> list = new ArrayList();// 这里的属性为什么要这样写
从以下几个方面给你回答:
1、private修饰符:是为了把集合封装起来,安全,只在下面使用了set和get方法留出访问的接口函数
2、在这里使用了多态,父类的引用指向了子类对象(父类是List集合,子类是ArrayList),他还有一个常用的子类是LinkedList,注意他们使用的范围啊!!!
3、在这里使用了泛型,“<String>”表示集合中的元素为存储的都是String类型的对象,不加泛型编译时会出现不安全的提示哦!
4、定义集合是用来存储对象的,是一个容器,具体使用什么容器,什么集合?那要看你的需求了!
好了  加油 啊 希望可以帮到你
回复 使用道具 举报
唯一的原因就是:
当我们直接写成private List<String> list;时,类在初始化的时候,引用类型的字段默认赋值为null,基本类型就根据其类型来定,如int ->0 boolean-> false等.
这样如果我们在后面使用list的时候就会包空指针异常。使用在最开始的初始化的时候,我们强制让其指向 new ArrayList(); 避免出现这个空指针异常。
你不写也可以,每次使用的是用if判断一下是否为空,这样就比较麻烦。
还是你所说的id,name,list叫字段,不叫属性,具有getter和setter的getList()和setList()才叫属性。属性和字段可以不同名。
回复 使用道具 举报
int类型的变量默认是0;而引用数据类型默认是null,你不那么写也行,使用引用数据的时候先判断就可以
回复 使用道具 举报
彭昆 发表于 2013-1-28 12:11
唯一的原因就是:
当我们直接写成private List list;时,类在初始化的时候,引用类型的字段默认赋值为null ...

讲的不错 可是我还是不明白
回复 使用道具 举报
沙漠里的小鱼 发表于 2013-1-28 21:26
讲的不错 可是我还是不明白

一句话:避免空指针异常。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马