Zum Beispiel in diesem einfachen Java-Programm:Warum kann ich bei der Verkettung eine Import-Anweisung weglassen, aber nicht, wenn ich sie einzeln anrufe?
- Wenn ich schreibe:
frame.getContentPane().add(button);
Ich brauche nur zu import javax.swing.*;
und der Code kompiliert perfekt.
- Allerdings, wenn ich schreibe:
Container cont = frame.getContentPane(); cont.add(button);
ich beide haben import javax.swing.*;
und import java.awt.*;
denn es gibt kein cannot find symbol
Compiler-Fehler zu sein.
Sind nicht beide Möglichkeiten, es technisch genau das Gleiche zu schreiben? Warum brauchen Sie weniger oder mehr Importanweisungen auf die eine oder andere Art?
Wenn ich es auf die erste Weise, wie in meinem Beispiel, aufrufen, gibt getContentPane() immer noch ein Container-Objekt zurück, obwohl ich es möglicherweise nicht mit einer Container-Referenzvariablen referenziere?
'Container' ist eine Klasse aus dem' java.awt' Paket, vermutlich 'JFrame' ist eine Klasse aus' javax.swing' Paket, sie leben an verschiedenen Orten. * "Sind beide Wege, es technisch zu schreiben, genau gleich?" - Nein, das sind verschiedene APIs/Pakete/Namensräume – MadProgrammer
Danke, aber es klärt es immer noch nicht für mich auf. Wenn ich es auf die erste Weise anrufe, wie in meinem Beispiel zu sehen ist, gibt 'getContentPane()' immer noch ein Objekt vom Typ "Container" zurück, obwohl ich es vielleicht nicht mit einer Referenzvariablen "Container" referenziere? –
Ah sorry, das hat mehr damit zu tun, dass der '' JFrame' 'Container' importiert wurde, damit Java es finden kann, aber wenn du Java deklarierst, will ich wissen, welchen 'Container' du meinst, damit es sicher geht die Zuordnung ist richtig/gültig – MadProgrammer