Apprendre Java en 2017

a marqué ce sujet comme résolu.

Bonjour,

Oui le tuto de cysboy est totalement obsolète. Je n’ai pas de tuto en tête à te conseiller mais regarde un peu les liens des ressources sur le sujet chez StackOverflow.

Et si après tu t’intéresse à Java EE, les articles de BalusC sont très bien (ainsi que ses réponses sur SO).

En plus sympathique que le Java mais toujours sur la JVM, je te conseille de jeter un œil sur le langage Kotlin qui est interopérable avec Java et développé par JetBrains (la société qui développe IntellijIDEA, PyCharm....).

+2 -0

Pour le Java 7, on peu aussi citer le try-with-resources, les nouvelles API Java NIO avec les Paths & Co pour remplacer l’ancienne à base de File, le diamond operator

Sous le terme barbare de diamond operator se cache un truc tout simple pour les génériques et donc utilisé de partout dans les collections et qui simplifie l’écriture. Sous le capot, j’imagine que type à instancier est inféré à partir du type déclaré de la variable.

1
2
3
4
5
// Avant 
List<String> myList = new ArrayList<String>();

// Après
List<String> myList = new ArrayList<>();
+0 -0

Objects et Collections ont aussi était améliorés en java7, non?

Signé, un fan de return Collections.emptyList().

artragis

La Javadoc me dit Java 1.5 pour Collections.emptyList()

Il faut juste faire attention car la liste retournée est immutable donc tu ne peut pas faire de myList.add() dessus ou ce genre de chose.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class EmptyTest {
    public <T> List<T> foo() {
        return new ArrayList<>();
    }

    public <T> List<T> bar() {
        return Collections.emptyList();
    }

    public static void main(String[] args) {
        EmptyTest test = new EmptyTest();
        List<String> l = test.foo();
        l.add("Hello");
        System.out.println(l);

        List<String> l2 = test.bar();
        l2.add("Coucou"); // BOUM - Ligne 24
        System.out.println(l2);
    }
}

// Résultat
[Hello]
Exception in thread "main" java.lang.UnsupportedOperationException
  at java.util.AbstractList.add(AbstractList.java:148)
  at java.util.AbstractList.add(AbstractList.java:108)
  at EmptyTest.main(EmptyTest.java:24)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Process finished with exit code 1
+0 -0

Il faut juste faire attention car la liste retournée est immutable donc tu ne peut pas faire de myList.add() dessus ou ce genre de chose.

c’est la raison qui rend cette fonction si utile en fait.

Par contre Objects apparait bien en 1.7 et quelques ajouts ont été fait à Collections dans cette version.

Mais la killer feature de java 1.8 reste String.format…

Merci pour vos réponses (outre le débat douteux que je comprends pas mais bref :-p ). Je vais regarder du côté des liens du Fumble et aussi la doc d’oracle.

En revanche, ne connaissez-vous pas de cours complet dans le style de ceux du zds/sdz?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte