2010-08-14 1 views
5

C'è qualche enunciato java (> 5) per elencare paesi e lingue europei da qualche parte? Se non ce ne sono, probabilmente li scriverò da questa lista: http://www.nationsonline.org/oneworld/european_languages.htmC'è qualche enum java di paesi e lingue europei?

Ma se potessi evitare quell'onere, sarebbe fantastico!

P.S .: Infine, sto iniziando a utilizzare il servizio web geoNames su geonames.org. Per i paesi che uso questo frammento in Groovy:

import org.geonames.* 

ToponymSearchCriteria sc = new ToponymSearchCriteria() 
sc.setContinentCode("eu") 
sc.setFeatureCode("PCLI") 
def res = WebService.search(sc) 
def countries = res.getToponyms().collect{it.countryName}.sort() 
+0

perché si desidera un'enumerazione di 50 oggetti? Non penso che sia facile da mantenere o da usare. Puoi dettagliare le tue ragioni per volere un enum? – Asaf

+3

Un 'Java Enum' in quel campo sarebbe di natura ** troppo statica **. –

+0

Grazie a tutti voi ragazzi per i vostri approfondimenti ... Credo che dimenticherò l'idea di usare un enumer per questo e memorizzerò i paesi e le loro lingue come oggetti di dominio della mia app ... – Philippe

risposta

14

E 'improbabile che i progettisti quadro professionisti comprenderanno tale Enum nella loro biblioteca, perché l'insieme dei paesi (e l'insieme di lingue ufficiali politicamente riconosciute) cambia tutto il tempo. Dovresti o rompere indietro la compatibilità, rendendo l'Enum piuttosto inutile per il software che dovrebbe funzionare per più di qualche anno, oppure dovresti tenere i vecchi e non più riconosciuti paesi e lingue nell'Enum .

+0

Sono d'accordo che questo non dovrebbe essere un quadro professionale. Mi stavo chiedendo se qualcuno, da qualche parte, ha uno di quelli nelle sue librerie, solo per cominciare ... – Philippe

+0

ti manca il punto: le enumerazioni dovrebbero essere per sempre. i paesi cambiano –

+2

Niente è per sempre, amico.Possiamo avere un enum di pianeti in questo sistema solare? Secondo Joshua Bloch, sì - ce l'ha nel suo libro pubblicizzato come miglior consiglio per Java. Secondo voi ragazzi, noooooo. – irreputable

1

Almeno mi piacerebbe generare la classe enum da quell'URL. È possibile analizzare l'HTML, recuperare i valori e scrivere un file java che definisce l'enum.

E ogni volta che il contenuto di questo URL cambia, è possibile rieseguire l'autogeneratore e creare una nuova classe enum.

Ma attenzione: ogni modifica dell'enumerazione ha il potenziale di introdurre errori nel resto del codice.

7

Forse Locale.getISOCountries() e Locale.getISOLanguages() ti aiuteranno.

+0

Ehi! Come fanno a far fronte ai paesi che cambiano in questo mondo ??? – Philippe

+0

java.util.Locale fornirà solo una dipendenza dal framework java e, quando i paesi cambieranno, non si otterrà un aggiornamento fino alla successiva versione di Java. – homaxto

8

Non c'è niente di male nell'usare enum per archiviare dati piuttosto stabili. Cos'altro puoi fare, memorizzarlo in XML? Come va meglio? Quindi non devi ricompilare (che è una seccatura huuuge)? In che anno viviamo?

Oppure memorizzarlo nel database; quando nasce un nuovo paese, abbiamo solo bisogno di inserire una riga nel database e l'applicazione, scritta in modo intelligente, la caricherà e la userà immediatamente, senza riavviare l'applicazione! Evviva.

Anche per l'Europa, è un tale eccessivo. Sono sicuro che non cambiano i Paesi più frequentemente di quanto possiamo ridistribuire le nostre applicazioni, che, in qualsiasi azienda moderna, avvengono almeno una volta alla settimana.

Nulla è per sempre, amico. Possiamo avere un enum di pianeti in questo sistema solare? Secondo Joshua Bloch, sì - ce l'ha nel suo libro pubblicizzato come miglior consiglio per Java. Secondo voi ragazzi, noooooo.

Beh, almeno potremmo scoprire solo nuovi pianeti e non possiamo distruggere vecchi pianeti (in qualsiasi futuro prevedibile), quindi un enum pianeta è ok per quanto riguarda la compatibilità, giusto?

Dillo a Pluto.

+1

Grazie per il commento, mi sento meno solo nel mondo delle "decisioni di design non così perfette che potrebbero comunque fare il lavoro" :-) – Philippe