2017-10-16 20 views
1

Considérez cette fonction qui résume les résultats d'une série de valeurs passées à une fonction ...Existe-t-il des fonctions agrégées ou de type select intégrées à Java 7?

int totalColumnWidth = 0; 
for(int columnIndex = 0; columnIndex < columnCount; columnIndex++) 
    totalColumnWidth += getWidthForColumn(columnIndex); 

Il semble tellement bavard! Dans d'autres langues, je peux le faire en une ligne, ce qui a l'avantage supplémentaire de me permettre de rendre totalColumnWidth en lecture seule. Y at-il une telle chose dans Java 7 (nous faisons le développement Android pour KitKat API 19).

Je suppose que non, car je comprends que Java 7 ne supporte pas les lambdas qui sont nécessaires pour ce type de fonctionnalité (vous devrez passer l'appel getWidthForColumn()), mais j'aimerais bien me tromper.

+1

Vous avez raison. C'est facile à créer dans ** Java 8 ** mais pas dans ** Java 7 **. – Zabuza

+0

Je ne suis pas convaincu que 3 lignes de code soient verbeuses (mais je suppose que vous nous montrez une version simplifiée de votre 'vrai' code)! Quoi qu'il en soit, pour répondre à votre question, désolé, vous avez besoin de Java 8 pour ce – Stormcloud

+0

ou Kotlin, qui est très populaire sur Android, pour cette raison entre autres, et fonctionne sur Java 6. –

Répondre

0

Vous avez raison. Java 7 ne prend pas en charge de telles fonctionnalités par défaut. Il peut être facilement créé avec Java 8 cependant.

Cependant, certaines bibliothèques fournissent des méthodes similaires ou émulent des lambdas. Par conséquent également voir SO: java streams in Java 7 (comme indiqué par @ Oleg).