? Estoy confundido sobre qué es exactamente el envío. Especialmente cuando se trata de doble envío. ¿Hay alguna manera simple de captar este concepto?¿Qué está enviando en java
Respuesta
Despacho es la forma en que un lenguaje vincula las llamadas a las definiciones de función/método.
En Java, una clase puede tener múltiples métodos con el mismo nombre pero diferentes tipos de parámetros, y el lenguaje especifica que las llamadas al método se envían al método con el número correcto de parámetros que tiene los tipos más específicos que los parámetros reales podría coincidir. Eso es un despacho estático.
Por ejemplo,
void foo(String s) { ... }
void foo(Object o) { ... }
{ foo(""); } // statically dispatched to foo(String)
{ foo(new Object()); } // statically dispatched to foo(Object)
{ foo((Object) ""); } // statically dispatched to foo(Object)
Java también tiene método virtual de despacho. Una subclase puede anular un método declarado en una superclase. Por lo tanto, en tiempo de ejecución, la JVM debe enviar la llamada a método a la versión del método que sea apropiada para el tipo de tiempo de ejecución this
.
Por ejemplo,
class Base { void foo() { ... } }
class Derived extends Base { @Override void foo() { ... } }
{ new Derived().foo(); } // Dynamically dispatched to Derived.foo.
{
Base x = new Base();
x.foo(); // Dynamically dispatched to Base.foo.
x = new Derived(); // x's static type is still Base.
x.foo(); // Dynamically dispatched to Derived.foo.
}
doble despacho es la combinación de estática y tiempo de ejecución (también llamado dinámicos) distribuye.
¡gracias! eso ayudó mucho. – thunderousNinja
Esta es una respuesta muy bien diseñada. Sé que Java no es un lenguaje de doble despacho, pero ¿podría agregar un ejemplo de cómo sería el doble despacho en el contexto de sus ejemplos actuales? Supongo que sería algo como 'x.foo (" ")' pero creo que sería muy útil verlo. – Ogen
@Ogen, esto se trata de despacho doble en Java. ¿Podrías haber querido decir JavaScript? –
- 1. ¿Qué significa cuando MySQL está en el estado "Enviando datos"?
- 2. ¿Qué software está enviando User-Agent "Test Certificate Info"?
- 3. Se está enviando spam usando mi dominio, ¿qué puedo hacer?
- 4. Chrome: ¿por qué está enviando solicitudes if-modified-since?
- 5. GitLab ¿El correo electrónico no está enviando?
- 6. Enviando XPath una variable de Java
- 7. Detectar en C si se está enviando a un terminal
- 8. Ningún navegador está enviando información de autorización en el encabezado
- 9. enviando y recibiendo paquetes UDP usando Java?
- 10. ¿Qué hacer con cromo enviando solicitudes adicionales?
- 11. ¿Está enviando una respuesta de PHP a una aplicación móvil Android/Java?
- 12. ¿Qué hilo Java está acaparando la CPU?
- 13. enviando NaN en json
- 14. ¿Qué está en línea?
- 15. Enviando int a través del socket en Java
- 16. Enviando correo electrónico en Java utilizando Apache Commons email libs
- 17. Enviando una estructura C++ sobre UDP en Java
- 18. Enviando un SMS en Android
- 19. Backbone.js model.destroy() no está enviando la solicitud DELETE
- 20. ¿Por qué Firefox no está enviando el encabezado If-Modified-Since?
- 21. ¿Por qué el modelo Backbone está enviando atributos duplicados al servidor al guardar?
- 22. Java enviando archivo cifrado a través del socket
- 23. SendInput() no está "enviando" los caracteres desplazados correctos?
- 24. ¿Por qué $ .post() está sujeto a la misma política de origen, pero está enviando un formulario con method = 'POST' correcto?
- 25. ¿Está enviando correos electrónicos de verificación de registro usando Authlogic?
- 26. ¿Dónde está Polygon.Doble en Java?
- 27. enviando POST en ruby?
- 28. Enviando SMS en Android
- 29. ¿Qué versión de Java se está ejecutando en Eclipse?
- 30. Qué bit está activado por un entero en Java
jaja sí ... pensé que si entendía despachar, obtendría una mejor comprensión del patrón de visitante – thunderousNinja
Ah sí. Lo siento, eliminaré la etiqueta. Esto no tiene nada que ver con los patrones de diseño :) – BalusC
Solo para observar que el término "despachar" está algo sobrecargado. También puede significar la operación de poner tareas programadas en un procesador. En algunos programadores en tiempo real, el concepto de un planificador y un despachador son ideas distintas y componentes de software. – andersoj