java 中的内部静态构造函数 Class?
Constructor Inside Inner Static Class in java?
我写了下面的代码
public class Reader1 {
private int pageNumber;
private class ReaderName1{
public int getPage(){
return pageNumber;
}
}
static class ReaderFound{
}
}
当我在编译代码上使用 Java Class 文件反汇编器 javap 时,我得到了
1. for Reader1.class
class Reader1$ReaderName1 {
final Reader1 this[=13=];
private Reader1$ReaderName1(Reader1);
public int getPage();
}
2. for Reader1$ReaderName1.class
public class Reader1 {
private int pageNumber;
public Reader1();
static int access[=13=]0(Reader1);
}
3. for Reader1$ReaderFound.class
class Reader1$ReaderFound {
Reader1$ReaderFound();
}
我的问题是因为 ReaderFound 是静态的 class 它怎么会有默认构造函数?如果是,为什么?允许吗?
如果允许,在 class Reader1$ReaderFound 中找到的是哪种构造函数,因为它不能是静态的。
(此外,由于构造函数被隐式调用以初始化对象,并且由于 ReaderFound 是静态的 class 所以我们不会
它的对象。我对第一个问题的看法)
Java中有四种嵌套的classes:静态成员classes、非静态成员classes、匿名 classes 和 local classes.
静态成员class可以看作是在另一个class中声明的普通class。它不需要实例化封闭 class 的实例。由于不需要实例,因此它无法访问封闭 class 中的实例方法和变量。它能够访问 class 成员,即使他们是私有的。
class EnclosingClass {
static class StaticMemberClass { }
public static void main(String... args) {
EnclosingClass.StaticMemberClass nestedInstance =
new EnclosingClass.StaticMemberClass();
}
}
作为静态嵌套 class 并不 意味着您不能从它创建实例。因此,如果您不创建自定义构造函数,将创建一个默认构造函数。
我写了下面的代码
public class Reader1 {
private int pageNumber;
private class ReaderName1{
public int getPage(){
return pageNumber;
}
}
static class ReaderFound{
}
}
当我在编译代码上使用 Java Class 文件反汇编器 javap 时,我得到了
1. for Reader1.class
class Reader1$ReaderName1 {
final Reader1 this[=13=];
private Reader1$ReaderName1(Reader1);
public int getPage();
}
2. for Reader1$ReaderName1.class
public class Reader1 {
private int pageNumber;
public Reader1();
static int access[=13=]0(Reader1);
}
3. for Reader1$ReaderFound.class
class Reader1$ReaderFound {
Reader1$ReaderFound();
}
我的问题是因为 ReaderFound 是静态的 class 它怎么会有默认构造函数?如果是,为什么?允许吗?
如果允许,在 class Reader1$ReaderFound 中找到的是哪种构造函数,因为它不能是静态的。 (此外,由于构造函数被隐式调用以初始化对象,并且由于 ReaderFound 是静态的 class 所以我们不会 它的对象。我对第一个问题的看法)
Java中有四种嵌套的classes:静态成员classes、非静态成员classes、匿名 classes 和 local classes.
静态成员class可以看作是在另一个class中声明的普通class。它不需要实例化封闭 class 的实例。由于不需要实例,因此它无法访问封闭 class 中的实例方法和变量。它能够访问 class 成员,即使他们是私有的。
class EnclosingClass {
static class StaticMemberClass { }
public static void main(String... args) {
EnclosingClass.StaticMemberClass nestedInstance =
new EnclosingClass.StaticMemberClass();
}
}
作为静态嵌套 class 并不 意味着您不能从它创建实例。因此,如果您不创建自定义构造函数,将创建一个默认构造函数。