昨天参加21cn的笔试,看了下他们的题目。都是很考基础的,有一题是这样的。
题目大概是这样的:  下面代码可能会出现什么问题?
List<Person> personList=new ArrayList<Person>();
String hql="from Person p";
personList =personDao.getHibernateTemplate().find(hql);
Person p=personList.get(0);我很少用Spring的HibernateTemplate,都是直接用的Hibernate的api。求大家帮忙看看上面代码可能会出现什么问题。还有一题是:请说出’四人帮‘提出的设计模式,并画出相应的uml。这题确实蒙了。我之前知道java的设计模式。但是四人帮没听过。后来做完上网看了下 那23种设计模式就是国外那四个人写了一本关于设计模式的书。我随便写了几个。但是uml图...Java设计模式

解决方案 »

  1.   

    肯定会出现空指针问题了。如果personList为空,Person p=personList.get(0);就会报空指针问题了,要判断下personList是否为空才行。
      

  2.   

    personList =personDao.getHibernateTemplate().find(hql);
    Person p=personList.get(0);
    其实就是Hibernate的template被集成到了spring中,他不是spring的东西。
    通过数据库查询后返回的personList不会为null,方法额你不做过处理,但是可能personList.size()为0,所以要在get元素的之前判断大小。
      

  3.   

    personList =personDao.getHibernateTemplate().find(hql);
    这句话在编译器就不会过,find返回的是不带泛型的,而你的 personList 是 List<Person>,所以直接在编译器就会提示错误,需要抢转、
    其次就是楼上所说的问题
      

  4.   

    1,
    personList =personDao.getHibernateTemplate().find(hql);
    这句可能编译不过,除非你personDao是new出来的对象,2,find返回的是泛型,这里编译器会出警告,3,Person p=personList.get(0);这里会报空指针异常。
      

  5.   

    下表越界,不可能空指针,除非你改了hibernate源码。