Im folgenden Codeausschnitt verwenden, vermutlich scheint es, dass es einige Übersetzungsfehler ausgeben sollte, aber es funktioniert nicht:einen inneren Klassennamen und einen Objektnamen gleiche in Java
class Outer {
public static class Inner {
static String obj = "Inner";
}
static Optional Inner = new Optional();
//The (inner) class name and the object name are same.
}
class Optional {
String obj = "Optional";
}
public class Main {
public static void main(String[] args) {
System.out.println(Outer.Inner.obj);
//Refers to the string inside the optional class
}
}
Die Klasse Outer
ein statisches hat Klasse darin nannte Inner
. Außerdem erklärt es ein Objekt (statisch) der Klasse Optional
(static Optional Inner = new Optional();
)
Diese Aufgabe und die Klassennamen (in der Klasse Outer
) sind die gleichen, die Inner
ist. Das Programm zeigt Optional
an. Der einzige Ausdruck Outer.Inner.obj
innerhalb von main()
wird erwartet, Inner
anzuzeigen, tut es aber nicht. Der tatsächliche Ausgang ist jedoch Optional
, was der Fall der Optional
Klasse ist.
Eine Möglichkeit, Inner
anzuzeigen, besteht darin, den Objektnamen in einen anderen Namen zu ändern.
static Optional Inner1 = new Optional();
Vom Ausgang es zeigt, scheint es, dass die Objektnamen (oder eine Variable) über einen Typnamen gewählt (die Klasse Inner
), weil sie den gleichen Namen haben. Welcher genaue Fall wird hier angewendet?
+1 eine sehr nette Antwort! – GingerHead
Downvoter Pflege Kommentar? – GingerHead
Es ist in der Tat eine sehr nette Antwort auf eine Frage, die hier nicht gestellt wurde. – LuGo