A parte il fatto che sintatticamente questo statement, almeno in Java, non ha senso
Cubo mappa.put("c"+1, new String()) = new Cubo
CHE COSA vorresti fare?
Premettiamo che Java e' un linguaggio TIPATO, dove le variabili hanno un TIPO definito in fase di dichiarazione.
Questo vuol dire che i TIPI dei valori che puoi assegnare ad una variabile sono STRETTAMENTE legati al TIPO della variabile. Che poi le regole siano piu' o meno complicate, e' un'altra questione.
Al contrario, i linguaggi NON TIPATI, come Python (ed altri), la variabile NON HA UN TIPO PREDEFINITO e puo' contenere un qualunque TIPO DI VALORE: una stringa, ma anche un intero o un oggetto di qualunque classe.
Per loro natura, il linguaggi NON TIPATI non sono adatti a fare cose molto complesse:
1) non sfrutti il compilatore per capire se stai facendo pasticci, oltre a quelli che si fanno normalmente quando uno programma (alle prime armi o meno)
2) non sono efficienti, perche' non e' possibile sapere a priori il tipo del valore trattato e quindi, ad esempio, se una certa operazione va eseguita su interi, numeri con virgola, stringhe o oggetti
La tendenza attuale e' quella di avere linguaggi TIPATI che SEMBRANO NON TIPATI: lo stanno facendo in C++ con la keyword
auto, C# con
var, e Scala, con
var e
val. Ma questo puo' essere fatto SOLO PERCHE' il compilatore integra un potente sistema di deduzione dei tipi.