【发布时间】:2016-04-12 17:23:49
【问题描述】:
如果我正在创建一个 Fragment 类,我已经看到到处都写着包含一个空构造函数是个好主意(尽管我不确定为什么,因为我一直认为 Java 有一个在底层调用的空构造函数对于任何 Java 类,只要您不创建带参数的构造函数,并且 Android 不喜欢您使用带参数的构造函数制作片段)。
但是如果我正在创建一个 newInstance() 方法(这样我可以使用默认参数设置我的 Bundle),我是否必须创建空构造函数?
如果包含 newInstance() 而不是空的构造函数就足够了,即使包中没有参数,我是否可以对所有片段执行此操作?这有什么缺点吗?
【问题讨论】:
-
没有缺点。事实上 newInstance() 强制执行工厂模式...当您以后想要更改或重构代码时,这将变得很有用。
-
我还需要空构造函数吗?为什么我需要包含它?
-
不,你不需要空的构造函数
-
“我一直认为,只要您不创建带参数的构造函数,Java 就会在后台为任何 Java 类调用一个空构造函数”——正确。 “即使捆绑包中没有参数,我可以对我的所有片段执行此操作吗?” ——如果你愿意,你可以。我会打电话给
new WhateverFragment()。您不需要实现零参数的公共构造函数;你只是继承它。 -
正确——你的假设是错误的。如果不实现公共零参数构造函数,则从超类继承一个。见this sample fragment“我的困惑源于此”——是的,文档很烂。
标签: java android android-fragments instantiation