En fait, ce fut un exemple idéal, car il y a deux différentes classes Date Java standard: java.util .Date et java. sql .Date.
Comment sait-il que l'on à utiliser? Simple. La méthode getDate() est déclarée dans le cadre de la définition de la classe chose, et une partie de cette déclaration est son returntype:
public java.util.Date getDate() {
return this.date;
}
Bien sûr, si vous avez une importation dans la définition de la classe chose - et ce n'est pas ambigu, vous dites simplement:
public Date getDate() {
Si vous deviez décoder le binaire de la classe chose, vous verriez la signature de la méthode de la méthode getDate et comprend le nom de classe entièrement qualifiés (y compris paquet) du type de retour.
Un import est simplement une manière de dire au compilateur quel (s) paquet (s) vous voulez supposer lorsque vous faites référence à des classes sans qualifications explicites. La liste des importations sera analysée chaque fois qu'un nom de classe non qualifié est vu, et les paquets seront recherchés. S'il n'y a pas d'ambiguïté (comme l'importation de java.util.date et de java.sql.Date), cette classe sera utilisée. Si vous pouvez déterminer la classe implicitement ou si le nom de la classe est entièrement qualifié, vous n'avez pas besoin d'importer.
Ne pas vous dire 'System.out.println (Thing.getDate() getTime().);' – JeeBee
@JeeBee: Cela fonctionnera comme écrit, mais vous avez raison de dire que c'est trompeur (toutes les choses auront la même date). –
Oups, merci - ont corrigé. getDate() a démarré comme une méthode d'instance et j'ai oublié de changer l'appel pendant que j'écrivais. Leçon de gérer soi-même les choses après javac avant de poster. – jjujuma