1.对static的滥用和理解不透彻造成表面上linkedlist.add()添加的是不同的内容,实际不是
- class NowStatus{
- /**
- *加了static之后,虽然linkedlist.add()两次添加此类的对象不同,但是此类
- *的三个私有变量均为static,每个对象用的都是相同的三个变量,在每一个对
- *象修改其变量的值的时候,就是对共有的static变量的修改,因此最后的值
- *一 样。
- *结果:
- *battier
- *end
- *3:46
- *battier
- *end
- *3:46
- *解决办法:
- *去掉static
- */
- private static String query;
- private static String status;
- private static String time;
- public String getQuery(){
- return query;
- }
- public void setQuery(String query){
- this.query=query;
- }
- public String getStatus(){
- return status;
- }
- public void setStatus(String status){
- this.status=status;
- }
- public String getTime(){
- return time;
- }
- public void setTime(String time){
- this.time=time;
- }
- }
- /**
- * test LinkList add method
- *
- */
- public class LinkList {
- public void testLinkListed(){
- List<NowStatus> list=new LinkedList<NowStatus>();
- NowStatus nowStatus=new NowStatus();
- nowStatus.setQuery("hah");
- nowStatus.setStatus("start");
- nowStatus.setTime("12:08");
- list.add(nowStatus);
- nowStatus=new NowStatus();
- nowStatus.setQuery("battier");
- nowStatus.setStatus("end");
- nowStatus.setTime("3:46");
- list.add(nowStatus);
- myPrint(list);
- }
- private static void myPrint(List<NowStatus> list){
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i).getQuery());
- System.out.println(list.get(i).getStatus());
- System.out.println(list.get(i).getTime());
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- LinkList linkList=new LinkList();
- linkList.testLinkListed();
- }
- }
2.对引用理解不透彻和linkedlisted.add
- class NowStatus{
- private String query;
- private String status;
- private String time;
- public String getQuery(){
- return query;
- }
- public void setQuery(String query){
- this.query=query;
- }
- public String getStatus(){
- return status;
- }
- public void setStatus(String status){
- this.status=status;
- }
- public String getTime(){
- return time;
- }
- public void setTime(String time){
- this.time=time;
- }
- }
- /**
- * test LinkList add method
- * @author bruce.liu
- * @since 12.30 2008
- */
- public class LinkList {
- public void testLinkListed(){
- List<NowStatus> list=new LinkedList<NowStatus>();
- NowStatus nowStatus=new NowStatus();
- nowStatus.setQuery("hah");
- nowStatus.setStatus("start");
- nowStatus.setTime("12:08");
- list.add(nowStatus);
- /**此时的打印结果为
- *battier
- *end
- *3:46
- *battier
- *end
- *3:46
- *不是期望得到的结果:为什么?
- *因为两次add都是同一个对象,第一次add之后,又用这个对象的方法对其中的
- *变 量修改,因此两次显示结果一样,add应该是添加了一个引用,并没有创建对
- *象后添加
- *解决办法:@@处添加
- *nowStatus=new NowStatus();
- */
- nowStatus=new NowStatus();
- nowStatus.setQuery("battier");
- nowStatus.setStatus("end");
- nowStatus.setTime("3:46");
- list.add(nowStatus);
- myPrint(list);
- }
- private static void myPrint(List<NowStatus> list){
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i).getQuery());
- System.out.println(list.get(i).getStatus());
- System.out.println(list.get(i).getTime());
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- LinkList linkList=new LinkList();
- linkList.testLinkListed();
- }
- }