HINWEIS: Dies ist eine selbst beantwortete Frage. Es mag sehr einfach sein, aber ich dachte, es wäre es wert, geteilt zu werden.
Angenommen, ich habe eine anonyme Klassendeklaration:
%Vor% wo MyObject
ist:
Von diesem Abschnitt des Java-Sprachspezifikation (Hervorhebung von mir):
Eine anonyme Klasse kann keinen explizit deklarierten Konstruktor haben. Stattdessen wird ein anonymer Konstruktor implizit für eine anonyme Klasse deklariert.
Wenn ich versuche, die Anzahl von public
Konstruktoren zu erhalten:
Es wird wie erwartet Null ausgegeben, d. h. der anonyme Konstruktor ist nicht public
.
Es ist auch nicht private
, da, wenn wir Folgendes aus einer anderen Klasse im selben Paket aufrufen, in dem die anonyme Klasse definiert ist (indem Sie die Instanz myObj1
weitergeben):
Er vervollständigt ohne ein IllegalAccessException
.
Was ist der Zugriffsmodifikator des impliziten Konstruktors in einer anonymen Klasse?
Der anonyme Konstruktor verhält sich ähnlich wie der Standardkonstruktor , dass der Compiler auch für eine normale Klasse erstellt, die keine Konstruktoren deklariert. In diesem Fall:
Wenn in einem Klassentyp die Klasse
public
deklariert wird, erhält der Standardkonstruktor implizit den Zugriffsmodifikatorpublic
(§6.6); Wenn die Klasseprotected
deklariert ist, erhält der Standardkonstruktor implizit den Zugriffsmodifikatorprotected
(§6.6); Wenn die Klasseprivate
deklariert ist, erhält der Standardkonstruktor implizit den Zugriffsmodifikatorprivate
(§6.6); Andernfalls hat der Standardkonstruktor den Standardzugriff, der durch keinen Zugriffsmodifikator impliziert wird .
Mit anderen Worten, der anonyme Konstruktor ist nur im selben Paket wie die anonyme Klasse zugänglich.
Tags und Links java constructor anonymous-class