2015-02-27 4 views
2

Je pense avoir lu quelques discussions pertinentes sur Java qui vont unifier les types de données primitifs et d'objets.Est-ce que Java a un plan à long terme pour unifier les types de données primitifs et les types de données d'objet? Comment?

Est-ce que quelqu'un connaît les progrès? Est-ce possible? Je veux dire que vous pouvez toujours conserver les avantages des types de données primitifs après l'unification?

Mise à jour:

Une discussion est pertinente ici: no more primitive data types in Java (JDK 10+). What do you think?

Répondre

1

Scala est la réponse actuelle pour avoir un système de type plus riche comme celui-ci.

Notez que les primitives ne sont pas Nullable et ont une valeur par défaut de zéro, tandis que les objets ont une valeur par défaut de null. Comment votre code se casserait si certaines valeurs n'étaient ni vraies ni fausses, mais null à la place?

1

Il me semble que les primitives seraient simplement traduites en objets dans les coulisses, peut-être par le compilateur, bien que le plus ancien code-octet devrait encore être supporté. Nous ne serions pas en mesure d'aller dans l'autre sens en raison de nulls. Par exemple:

int x; 

serait interprété comme:

Integer x = new Integer(0); 

fonctionnalité est un peu en place pour faire partie de cette automaticallyy. En ce moment vous pouvez faire:

Integer x = 0; 

Ceci est la fonctionnalité "autoboxing" qui a été récemment introduit.

Personnellement, je ne suis pas très enthousiasmé par cela si c'est l'approche. Il va juste réduire le sucre syntaxique. Il serait également potentiellement entraîner des collisions:

void myFunc(Integer i) { ; } 
void myFunc(int I) { ; } 

Je suppose qu'ils pourraient envelopper primitives dans quelque chose qui va entier pour éviter cela, mais cela semble encore plus compliqué.