Я написал следующий код
public class Reader1 {
private int pageNumber;
private class ReaderName1{
public int getPage(){
return pageNumber;
}
}
static class ReaderFound{
}
}
Когда я использовал javap дизассемблера файлов классов Java в скомпилированном коде, я получил
1. for Reader1.class
class Reader1$ReaderName1 {
final Reader1 this$0;
private Reader1$ReaderName1(Reader1);
public int getPage();
}
2. for Reader1$ReaderName1.class
public class Reader1 {
private int pageNumber;
public Reader1();
static int access$000(Reader1);
}
3. for Reader1$ReaderFound.class
class Reader1$ReaderFound {
Reader1$ReaderFound();
}
Мой вопрос: поскольку ReaderFound является статическим классом, как он может иметь конструктор по умолчанию? Если да, то почему? Это разрешено?
Если разрешено, какой это конструктор, который находится внутри класса Reader1$ReaderFound, потому что он не может быть статическим. (Кроме того, поскольку конструктор неявно вызывается для инициализации объекта и поскольку ReaderFound является статическим классом, поэтому у нас не будет его объекта. Моя точка зрения на первый вопрос)
static
класс? Почему вы так думаете? - person Sotirios Delimanolis   schedule 25.03.2015Reader1
). Нестатические классы всегда привязаны к экземпляруReader1
. - person CoronA   schedule 25.03.2015