¿Cuál es la diferencia (en términos de uso) entre los espacios de nombres en C# y los paquetes en Java?Diferencia entre el espacio de nombres en C# y el paquete en Java
Respuesta
Desde: http://www.javacamp.org/javavscsharp/namespace.html
Java
paquetes se utilizan para organizar los archivos o tipos de públicos para evitar conflictos de tipos. Las construcciones de paquetes se pueden asignar a un sistema de archivos.
system.security.cryptography.AsymmetricAlgorithm aa;
puede ser sustituida:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
No hay alias de paquetes. Debe usar instrucción de importación o nombre completo para mencionar el tipo específico.
package n1.n2;
class A {}
class B {}
o
package n1.n2;
class A {}
Otro archivo de origen:
package n1.n2;
class B {}
paquete no se pueden anidar. Un archivo fuente solo puede tener una declaración de paquete.
C#
espacios de nombres se utilizan para organizar los programas, tanto como un sistema "interno" organización de un programa, y como un sistema de organización "externa".
System.Security.Cryptography.AsymmetricAlgorithm aa;
puede ser sustituida:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
Alternativamente, se podría especificar un alias para el espacio de nombres, por ejemplo
using myAlias = System.Security.Crypography;
y luego se refieren a la clase con
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
o
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
No existe un término como "espacio de nombre" en Java; un paquete actúa como como un espacio de nombres en Java, en términos de proporcionar un alcance para los nombres. También es parte del modelo de accesibilidad.
De section 7 of the Java Language Specification:
programas se organizan como conjuntos de paquetes. Cada paquete tiene su propio conjunto de nombres para los tipos, lo que ayuda a evitar conflictos de nombres. Se puede acceder a un tipo de nivel superior (§6.6) fuera del paquete que lo declara solo si el tipo se declara público.
EDIT: Bueno, después de la aclaración: un paquete Java es similares a un espacio de nombres de C# - excepto que tiene un impacto en la accesibilidad, mientras que en C# espacios de nombres y la accesibilidad son totalmente ortogonales.
En C++/C#, los espacios de nombres solo se utilizan para particionar nombres para evitar colisiones al usar accidentalmente el mismo nombre para una variable en diferentes lugares.
En Java, los paquetes son mucho más que eso: los paquetes se usan para los módulos, el aspecto de los nombres es solo una parte.
Hay algunos detalles que difieren.
En Java, la estructura del directorio debe coincidir con la estructura del paquete. No dicha restricción en C#.
En C# puede tener varios espacios de nombres en un archivo. En Java, un archivo pertenece a un paquete (ver anterior).
Java tiene acceso por defecto/paquete. La accesibilidad interna de C# va de en ensamblajes.
Si usa VS y Eclipse y les permite estructurar el proyecto, entonces no sentirá las diferencias mucho.
En java puede aplicar varios especificadores de acceso a las clases que tendrán un impacto en sus paquetes.
protegida: accesible a mismo paquete y sus subclases en otro paquete, defecto: accesible a mismo paquete, pública: universalmente accesible, privada: ni siquiera puede acceder en el mismo paquete.
Este tipo de especificadores de acceso no son aplicables a espacio de nombre en do sostenido
- 1. Javascript: ¿diferencia entre el espacio de nombres y el cierre?
- 2. ¿Cuál es la diferencia entre el archivo de encabezado y el espacio de nombres?
- 3. Diferencia en jQuery con el espacio de nombres XML y xhr.responseXML entre Opera y Firefox
- 4. diferencia entre el alcance y espacio de nombres de rubí en los carriles 3 enrutamiento
- 5. incluyen y el uso de espacio de nombres en C++
- 6. ¿Cuál es la diferencia entre una clase estática y un espacio de nombres? (en C#)
- 7. ¿Cómo usar el espacio de nombres org.apache.commons.lang en Java?
- 8. C++: el conflicto de espacio de nombres entre extern "C" y miembro de la clase
- 9. diferencia entre el iPhone AES (Objetivo-c) y Java
- 10. diferencia entre el entero atómico Java y C# Interlocked.Increment method
- 11. Diferencia entre '.' y "." en java
- 12. Diferencia de Enum entre Java y C++?
- 13. Creación de un espacio de nombres C++ en el encabezado y fuente (cpp)
- 14. espacio de nombres 'SharePoint' no existe en el espacio de nombres 'Microsoft'
- 15. Diferencia en el enlace entre C y C++?
- 16. un poco de diferencia entre nulo y el espacio
- 17. ¿Cuál es la diferencia entre un espacio de nombres y un módulo en F #?
- 18. Diferencia entre Object-C y Java
- 19. ¿Cómo se puede emular el espacio de nombres en C?
- 20. espacio de nombres, argparse, y el uso
- 21. C#, 'Forms' no existe en el espacio de nombres system.windows
- 22. Diferencia entre C: y C:/
- 23. ¿Para qué se usa el espacio de nombres en C++?
- 24. Diferencia entre read() y fgets() en C
- 25. DataContractSerializer - cambiar el espacio de nombres y deserializar el archivo vinculado al antiguo espacio de nombres
- 26. jax-ws importar y personalizar el paquete al mapeo del espacio de nombres
- 27. Tirando pitón módulo hacia arriba en espacio de nombres paquete
- 28. en que espacio de nombres/paquete para poner excepciones
- 29. El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data', etc
- 30. principal en el espacio de nombres
quiero decir para referirse al espacio de nombres en C#, por supuesto! – Mazzy