为什么我需要定义自定义构造函数?

时间:2011-09-27 13:39:17

标签: java android

如果我有一个类,比如说,从DialogFragment扩展并为它定义自定义构造函数,我为什么要定义一个默认类?如果发生运行时更改,我不会收到错误消息。

2 个答案:

答案 0 :(得分:3)

怀疑问题在于,在Java中,编译器会为您创建一个无参数构造函数,除非您自己指定。如果Android中的某些东西需要无参数构造函数,那么要么你不需要自己声明任何构造函数你需要显式地声明一个无参数构造函数。

来自Java语言规范的section 8.8.9

  

如果某个类不包含构造函数声明,则会自动提供不带参数的默认构造函数:

     
      
  • 如果声明的类是原始类Object,则默认构造函数具有空体。
  •   
  • 否则,默认构造函数不接受任何参数,只调用不带参数的超类构造函数。
  •   

这会让事情变得清晰吗?我不太清楚知道为什么你需要一个无参数的构造函数,但可能是因为可以通过反射创建实例而不指定构造函数参数的任何参数。

答案 1 :(得分:0)

构造函数可能包含在创建对象时运行的代码。它有点像你想要完成的设置代码,所以对象已准备好它应该做的事情。