Dopo le news su performance e linguaggi dinamici, scendiamo un pizzico più in profondità nell’analizzare i futuri cambiamenti nello scrivere codice Java.
Parzialmente influenzato proprio dai linguaggi dinamici (Mark Reinhold parla guarda caso di Python) il sottoprogetto di OpenJDK Project Coin è finalizzato a rendere più rapida e produttiva la scrittura di codice grazie a migliorie quali il supporto al tipo String nel costrutto switch (era ora!).
Finalmente, quindi, potremo scrivere codice come:
String s = ...
switch(s) {
case "quux":
processQuux(s);
// fall-through
case "foo":
case "bar":
processFooOrBar(s);
break;
case "baz":
processBaz(s);
// fall-through
default:
processDefault(s);
break;
}
Altra novità mirata a rendere più compatto il codice è l’operatore <> (indicato come diamond), ossia le parentesi angolari che - ormai da qualche anno, dall’introduzione dei generics - ogni sviluppatore Java ha imparato a riconoscere. Mi riferisco, volendo modellare un'ipotetica estrazione del lotto, ad una dichiarazione di variabile del tipo List<Integer> estrazione;.
Da Dolphin in poi, sarà possibile usare l’operatore diamond (lo si potrebbe considerare un “sottintendere†il contenuto delle parentesi angolari) quando:
- si costruisce un oggetto e contestualmente lo si assegna ad una variabile. Esempio:
//prima di Java 7 Map> anagrams = new HashMap>(); //da Java 7 in poi Map> anagrams = new HashMap();
class TreeNode<T> {
T value;
TreeNode<T> left, right;
private List<List<T>> buildPathsInternal(
List<List<T>> list, List<T> currPath, TreeNode<T> node) {
if (node == null) {
// type inference does not save typing here; see section on Wildcards.
list.add(new ArrayList<T>(currPath));
return list;
}
currPath.add(node);
buildPathsInternal(list, currPath, node.left);
buildPathsInternal(list, currPath, node.right);
currPath.remove(node);
return list;
}
public List<List<T>> getAllPaths(TreeNode<T> head) {
// Type inference saves typing here:
return buildPathsInternal(new ArrayList<>(), new LinkedList<>(), head);
}
}
Gli esempi sono tratti dal blog di Joseph D. Darcy, da cui è possibile apprendere ulteriori dettagli su Project Coin.
Se vuoi aggiornamenti su Java inserisci la tua email nel box qui sotto: