NetBeans Falsche collections Warnungen

Neumi5694

Top Contributor
Seit einiger Zeit krieg ich die Meldung "collection is only added to, never read", die schlicht und einfach falsch ist.
Klar kann ich die mit suppresswarning wegkriegen, aber das ist nicht Sinn der Sache.

Ist das nur ein Netbeans-Problem oder hat die JDK18 allgemein ein Problem damit?
Java:
var steps = new ArrayList<SomeObject>();
var steps.add(...);

steps.forEach(var step -> {...}); //zählt nicht als Zugriff
return Collections.unmodifiableList(steps); //zählt nicht als Zugriff

//Nur ein direktes get oder ein for each Iteratorzugriff zählen.

Bei Sets ist ess übrigens genau das Gleiche, an "var" liegt's auch nicht.
 

KonradN

Super-Moderator
Mitarbeiter
Seit einiger Zeit krieg ich die Meldung "collection is only added to, never read", die schlicht und einfach falsch ist.
Ja, da scheint NetBeans ein Problem zu haben. Das konnte ich bei mir nachvollziehen mit z.B.:
Java:
package com.mycompany.netbeanstest;

import java.util.ArrayList;


public class NetbeansTest {

    public static void main(String[] args) {
        var strings = new ArrayList<String>();
        strings.add("Test");
        strings.forEach((var s) -> System.out.println(s));

        System.out.println("Hello World!");
    }
}


Den Code hast Du im Forum geschrieben und nicht aus der IDE gekommen, oder? Der hat mich etwas verwirrt:
a) var steps.add(...); - mit dem var vor dem Aufruf wird das natürlich kein gültiger Java Code mehr.
b) steps.forEach(var step -> {...}); ==> Hier muss entweder das var weg oder das var step in Klammern:
steps.forEach(step -> {...});
steps.forEach((var step) -> {...});

Aber Typen sind da nicht notwendig, daher ist das mit dem var schon sehr gewöhnungsbedürftig und man wird da eher die erste Variante nutzen ...
 

Neumi5694

Top Contributor
Danke für die Antwort, da scheint wohl der interne Compiler ein paar Macken zu haben.

Ja, hab hier nur schnelle vereinfacht was reingeschrieben, um die Art der Zugriffe zu zeigen. Das ist kein funktionierender Code.

Das 'var' war in beiden Fällen ein Versehen, zu schnell dahingeklatscht.

1666099830082.png
 
Zuletzt bearbeitet:

Oben