Quelle est la différence entre un objet d'un type de vide et celle d'un type wildcard sans bornes dans les génériques Java? Je veux dire que je comprends l'utilisation de >, Ainsi que l'utilisation de vide en termes de réflexion, mais j'étais un peu intriguée lorsque j'ai vu le code source Java pour et sa méthode p> où à l'intérieur de la méthode, il utilise un Peut-on m'aider à comprendre la raison derrière cela? Merci p> p>
3 Réponses :
vide n'est pas une carte générique, il représente qu'il n'y a pas de valeur pour revenir du tout. p>
Le vide Javadoc ... p>
Merci. Je comprends le vide comme ce que dit son Javadoc, mais pourquoi la méthode Soumettre () renvoie-t-elle un avenir
void est une classe spéciale qui est utilisé pour représenter Il est donc très différent d'une carte générique, ce qui n'est pas une classe réelle mais représente un type spécifique, inconnu em> au moment de la compilation. Au moment de l'exécution, c'est effacé comme tous les autres types génériques. concernant la méthode void code> en soi em>, il ne peut pas être instancié (et jamais) instancié, la seule valeur possible pour elle est toujours null . Il est utilisé pour deux choses:
void.type code>. Voir Comment déterminer par réflexion si une méthode renvoie "void" par exemple. Li>
OL>
Soumettre code>. Voici les deux implémentations de JDK 6: P> public Future<?> submit(Runnable task) {
if (task == null) throw new NullPointerException();
RunnableFuture<Void> ftask = newTaskFor(task, null);
execute(ftask);
return ftask;
}
Merci et oui, mais je ne suis toujours pas tout à fait sûr pourquoi la méthode Soumettre () renvoie un avenir > Au lieu d'un futur
Merci de la résolution, surtout pour avoir publié JDK6 et JDK7 côte à côte, ce qui rendait les choses plus claires. Donc, cela ressemble plus à une question de ce qui a plus de sens plutôt que de ce qui est juste et faux.
void est la représentation de l'objet de annuler. Où le vide ne renvoie rien d'une méthode, le vide retourne toujours NULL. En effet, le vide n'est pas un objet et donc ne peut donc pas être utilisé avec des génériques. C'est bien d'utiliser le vide avec des contrats à terme lorsque vous n'avez besoin de valeurs de retour. p>
Avez-vous regardé le code source? Pour le retour du vide, vous avez juste besoin d'une interface runnable et de la méthode de course et non un avenir avec vide.
La différence est qu'il n'y a rien de même à leur sujet. Pas une vraie question.
C'est pourquoi j'ai dit que j'étais confus. Pourriez-vous s'il vous plaît élaborer un peu plus? Il suffit de dire que rien de la même chose ne vous aide pas vraiment.
@Jim Je ne sais pas pourquoi le commentaire que j'ai affiché ci-dessous est marqué comme supprimé, mais voyez-vous sérieusement un mot clé vide dans la fonction de soumission de AbstractExecuteTerservice? Parce que ce n'est pas là au moins dans le code source JDK 6.
@Arham je suis sûr que votre commentaire est toujours là. Je viens de découvrir qu'ils ont changé cela de JDK6 à JDK7 (ce que je cherchais - voir la réponse de la Rolve ci-dessous)