Perché alcuni progetti non utilizzano i generici

3

Ho esaminato un certo numero di progetti Java OSS e alcuni di essi non hanno ancora adottato i generici. Stanno usando tipi non elaborati (ad esempio List foo ) anziché tipi generici (ad esempio List<string> foo ). Altri progetti hanno solo iniziato a usare i farmaci generici negli ultimi anni, anche se pensavano di essere in circolazione da molto tempo.

Mi interessa sapere perché le persone e i progetti si astengono dall'usare i generici quando appare (per me) essere ora al ribasso nell'usarli anziché in rawtype. Per quelli di voi che usano java, ma non i generici, cosa (se mai) vi farebbe cambiare?

    
posta Jon Purdy 15.12.2010 - 03:01
fonte

4 risposte

8

Alcuni progetti devono essere eseguiti su JVM più vecchi. Ad esempio, alcuni progetti potrebbero non essere ancora in grado di utilizzare assert ancora (introdotto in Java 1.4), perché devono ancora lavorare su JVM Java 1.3.

Un altro fattore è semplicemente l'inerzia: se il codice è già stato scritto e funziona bene senza aggiungere l'uso di generici, ci sono pochi motivi per correre il rischio di cambiare il codice. Ma oggi sono diversi strumenti automatici per aiutarti a migrare il tuo codice Java per utilizzare i generici.

    
risposta data 15.12.2010 - 03:27
fonte
5

È utile, quando cerchi di capire cose del genere, pensare a ogni nuova versione di una lingua come una lingua diversa . Funzioni diverse, idiomi diversi, utenti diversi ...

Certo, la nuova versione è un linguaggio abbastanza facile da usare per gli utenti della versione precedente ... Ma alcuni programmatori - in realtà un bel po 'di programmatori - imparano una lingua e poi si fermano . Che si tratti di K & RC, C ++ di fine anni '80, VB5, Java 1.4 o C # 1.1 ... Troverai programmatori, anche interi negozi, che hanno imparato che una versione di quel uno lingua, ha acquistato un libro di riferimento, lo ha messo sullo scaffale e poi ha iniziato a usarlo. Suggerire che trascorrono più tempo a tracciare e integrare ogni nuovo standard nel loro lavoro è solo leggermente meno ridicolo che suggerire di digitare con una mano sola mentre si fanno le arance con l'altra, o iniziare a usare Scala - semplicemente non sembra necessario.

Con questo in mente, leggi: Come può Introduco nuove tecnologie per il mio team?

    
risposta data 12.04.2017 - 09:31
fonte
2

Un'altra risposta è che alcuni programmatori non capiscono veramente cosa stanno facendo. Java è un linguaggio molto accessibile che porta inevitabilmente le persone a impararlo rapidamente e senza mai progredire ulteriormente. So che quando avevo 16 anni ne sapevo abbastanza di Java rendevo le app di tutti i giorni buone, ma se non avessi continuato a imparare non saprei ancora che cos'è un generico.

    
risposta data 15.12.2010 - 04:18
fonte
1

Può essere una cattiva forma, ma sto postando una risposta come risposta alla risposta di Macneil; Non sono ancora in grado di commentare ovunque.

Non penso che funzionare su JVM più vecchi sarebbe il problema; la mia comprensione è che i generici sono stati aggiunti alla lingua nel modo in cui erano (con cancellazione del testo) in modo che il nuovo codice che utilizza i generici potesse essere eseguito su vecchie JVM. Ciò non vuol dire che lo stesso valga per le asserzioni, però, ma non è quello di cui si tratta comunque.

    
risposta data 15.12.2010 - 03:43
fonte

Leggi altre domande sui tag