代码之家  ›  专栏  ›  技术社区  ›  Kurt Peek

只有对超级()的调用的Java构造函数可以被重构吗?

  •  6
  • Kurt Peek  · 技术社区  · 7 年前

    我正在阅读一些类似于此的Java源代码:

    import android.support.v4.app.JobIntentService;
    
    public class NotificationService extends JobIntentService {
        public NotificationService() { super(); }
    }
    

    据我所知 Why call super() in a constructor? ,

    有一个隐式调用 super() 没有父类的所有类的参数

    那么,这个构造函数本质上不是一个no-op吗?也就是说,如果要删除构造函数,代码的工作方式是否完全相同?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Eugene    7 年前

    如果您只有一个参数构造函数,那么您可以删除它而不产生任何问题,因为它将由编译器自动提供。 https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

        2
  •  3
  •   Vince    7 年前

    如果类声明了多个构造函数 ,您的日志中显示的构造函数可以允许 nullary construction 以及 把它重构出来可能不安全 .


    然而, 如果类中没有其他构造函数 ,删除日志中显示的空构造函数不会导致错误; 从代码中重构它是安全的。