[英]How Can newInstance() Work If There Is No Constructor Written?
我遇到了一个有趣的Java代码段。 我研究了newInstance()是什么,这是避免调用构造函数并创建对象的新实例的一种方法。 但是看示例代码,我不明白一件事:为什么不需要构造函数?
public class SimpleContentFragment extends WebViewFragment {
protected static SimpleContentFragment newInstance(String file) {
SimpleContentFragment f=new SimpleContentFragment();
Bundle args=new Bundle();
args.putString(KEY_FILE, file);
f.setArguments(args);
return(f);
}
}
在此代码的其他地方没有创建构造函数。 没有
public SimpleContentFragment() {
// Required empty public constructor
}
正如我所期望的。
那么您能否阐明newInstance的静态方法中发生了什么? 从未编写构造函数时,如何调用new SimpleContentFragment()
?
这是因为如果没有提供,则Java将创建默认的无参数构造函数。 它将所有引用字段设置为null
,数值类型设置为0,布尔值设置为false
, 并调用超类构造函数 。
如果一个类不包含构造函数声明,则默认构造函数被隐式声明。 顶级类,成员类或本地类的默认构造函数的形式如下:
默认构造函数具有与类(第6.6节)相同的可访问性。
除了在非私有内部成员类中以外,默认构造函数没有形式参数,在默认情况下,默认构造函数隐式声明一个表示该类的立即封闭实例的形式参数(第8.8.1节,第15.9.2节,第15.9.3节) )。
默认构造函数没有throws子句。
如果要声明的类是原始类Object,则默认构造函数的主体为空。 否则,默认构造函数将简单地调用不带参数的超类构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.