2011-06-21 12 views
5

¿Hay algún mérito (estilo de codificación, mejores prácticas OOP, etc.) en trabajar con una instancia de java.net.URL en comparación con java.lang.String cuando puedo estar razonablemente seguro de que una URL es válida de todos modos (tal vez lo he especificado estáticamente en una archivo de propiedades) y voy a estar trabajando con él en su forma de cadena de todos modos (por ejemplo, imprimirlo en un archivo JSP)?Java: ¿URL o cadena?

Respuesta

10

java.net.URL 's iguales está roto. Debe usar java.net.URI. Debería pasar objetos alrededor siempre que sea posible en lugar de Strings. Guarda los errores del programador, por ejemplo, al obtener los parámetros del método al revés: el compilador no lo recogerá si ambos son cadenas.

+0

¿no es eso porque realmente busca los documentos para comparar? –

+0

@Richard H; es porque intenta resolver los nombres de host y comparar los números de IP en lugar de los nombres de host, que en realidad no solo es malo sino también incorrecto, al menos en lo que respecta a HTTP que tiene hosts virtuales. – gustafc

+0

¿qué pasa con URL.sameFile (otra URL)? – NoBugs

0

Obtendrá muchos métodos de soporte en caso o URL. pero si es solo para mostrar, entonces usa String, siempre puedes construir URL desde una cadena válida

+0

Es más fácil obtener una cadena de un URI/objeto URL (llamar 'toString()') que hacer un URI/URL de una cadena (que puede desencadenar 'MalformedURLException's), así que probablemente votaría para ir con objetos URI/URL independientemente del uso previsto. – gustafc

0

Bueno, la clase URL tiene muchos métodos que te permiten manipular la URL, por ejemplo obtener el host, la ruta y una docena de otras cosas . También puede abrir una conexión a la URL y buscar el documento si lo necesita.

Cuestiones relacionadas