问答详情
源自:5-6 持久化类中无参构造方法的必要性

hql 查询 默认构造器的问题

String hql = " from Commodity ";
  Query query = session.createQuery(hql);
  List<Commodity> commodities = query.list();
  
  for (Commodity commodity : commodities) {
   System.out.println(commodity.getId() + " : " + commodity.getName());
  }

我的Commodity类中没有构造器,但可以查询。

记得学校老师当时讲java课程时说,每个类都有一个无参构造器。即使你不申明,但是Java虚拟机会自己调用。

大神们知道这是为什么吗


提问者:横空hero 2017-11-20 19:40

个回答

  • 忽职守
    2017-11-22 14:06:53
    已采纳

    如果你的类里面没有写构造方法,那么编译器就在编译阶段给你生成一个无参数的构造方法,但是一旦你在类里面写了构造方法(无论有参无参),虚编译器就不生成无参构造方法了,而且此时无参构造方法只有你手动重写才会有,编译器不会给你创建的。

  • 忽职守
    2017-11-22 14:09:08

    可以写一个类,不提供任何构造器,然后找到编译后的class文件,用反编译程序大考这个文件,应该能看到一个无参构造方法