comment expliquer le retour de la déclaration dans le constructeur?
autant que je sache , le constructeur de retour rien , pas même void ,
et aussi
return ;
à l'intérieur de la méthode, moyens de retourner void .
donc dans mon programme
public class returnTest {
public static void main(String[] args) {
returnTest obj = new returnTest();
System.out.println("here1");
}
public returnTest ()
{
System.out.println("here2");
return ;
}
}
je fais appel
return;
qui sera de retour NUL , mais le constructeur n'est pas censé renvoyer quoi que ce soit ,
le programme compile bien .
veuillez expliquer .
avez-vous entendu parler de java conventions de nom?
Le programme ne compile pas du tout: elle donne une erreur de compilation pour une inaccessible déclaration.
hey c'était pas intentionnel , la dernière ligne, j'ai juste écrit par erreur , il n'était pas censé être là
"qui sera de retour NUL, mais le constructeur n'est pas censé renvoyer quoi que ce soit...". En fait, un constructeur est compilé pour une méthode spéciale appelée <init> qui retourne void.
Le programme ne compile pas du tout: elle donne une erreur de compilation pour une inaccessible déclaration.
hey c'était pas intentionnel , la dernière ligne, j'ai juste écrit par erreur , il n'était pas censé être là
"qui sera de retour NUL, mais le constructeur n'est pas censé renvoyer quoi que ce soit...". En fait, un constructeur est compilé pour une méthode spéciale appelée <init> qui retourne void.
OriginalL'auteur Hussain Akhtar Wahid 'Ghouri' | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
return
dans un constructeur saute hors du constructeur au point spécifié. Vous pouvez l'utiliser si vous n'avez pas besoin pour initialiser la classe dans certaines circonstances.par exemple
OriginalL'auteur John3136
return
peut être utilisé pour laisser le constructeur immédiatement. Un cas d'utilisation semble être de créer des demi-objets initialisés.On peut discuter pour savoir si c'est une bonne idée. Le problème à mon humble avis, c'est que les objets qui en résultent sont difficiles à travailler avec, car ils n'ont pas d'invariants qui vous pouvez compter.
Dans tous les exemples que j'ai vu jusqu'à présent utilisé que
return
dans un constructeur, le code a été problématique. Souvent les constructeurs étaient trop gros et comporte trop de logique d'entreprise, ce qui rend difficile à tester.Un autre modèle que j'ai vu de la mise en œuvre de la logique du contrôleur dans le constructeur. Si une redirection a été nécessaire, le constructeur stockée la redirection et appelé retourné. A côté de cela, ces constructeurs ont également été difficile à tester, le problème majeur est que chaque fois que d'avoir à travailler avec un tel objet, vous devez pessimiste supposer qu'il n'est pas complètement initialisé.
Mieux de garder toute la logique des constructeurs et viser complètement initialisé, de petits objets. Ensuite, vous pouvez rarement (voire jamais) auront besoin d'appeler
return
dans un constructeur.OriginalL'auteur Philipp Claßen
OriginalL'auteur AmitG
Méthodes déclarées avec
void
type de retour ainsi que les constructeurs juste retour rien. C'est pourquoi vous pouvez omettrereturn
déclaration à eux à tous. La raison pour laquellevoid
type de retour n'est pas spécifié pour les constructeurs est de distinguer constructeur à partir de la méthode avec le même nom:OriginalL'auteur Mikhail Vladimirov
Dans ce cas
return
agit de même pourbreak
. Il se termine l'initialisation. Imaginez classe qui aint var
. Vous passezint[] values
et souhaitez initialiservar
positifint
stockées dansvalues
(ouvar = 0
contraire). Ensuite, vous pouvez utiliserreturn
.OriginalL'auteur Stepan
OriginalL'auteur gaurav