Type safety: A generic array of.. Fehler

friednoodles

Aktives Mitglied
Hi, ich habe eine Methode die mir in JavaFX eine Tabelle erstellt und mit Werten füllt die ich über eine TextArea und ein TextFeld bestimmen kann.
Java:
    private void initTabelle() {
        TableColumn<Result, String> inputColumn = new TableColumn<>("Eingabe");
        TableColumn<Result, String> outputColumn = new TableColumn<>("Ausgabe");
        inputColumn.setCellValueFactory(e -> e.getValue().inputProperty());
        outputColumn.setCellValueFactory(e -> e.getValue().outputProperty());
        inputColumn.setMinWidth(135);
        outputColumn.setMinWidth(135);
        table.setMaxHeight(500);
        table.setMaxWidth(270);
        table.setItems(data);
        table.getColumns().addAll(inputColumn, outputColumn);
    }
Und eine dazugehörige Klasse die mir die Inhalte von TextField und TextArea zusammenführt.
Java:
package application;

import javafx.beans.property.SimpleStringProperty;

public class Result {
    private SimpleStringProperty input;
    private SimpleStringProperty output;
   
    public Result(String input, String output) {
        this.input = new SimpleStringProperty(input);
        this.output = new SimpleStringProperty(output);
    }
   
    public SimpleStringProperty inputProperty() {
        return input;
    }
   
    public SimpleStringProperty outputProperty() {
        return output;
    }

}

Im ersten Block bei
Java:
table.getColumns().addAll(inputColumn, outputColumn);
wird mir folgender Fehler angezeigt:
"Type safety: A generic array of TableColumn<Result,?> is created for a varargs parameter"
Habe versucht Erklärungen zu verstehen die ich auf StackOverflow gefunden habe, aber im Moment raucht mir bei deren Ausdrucksweise der Kopf.
Kann mir jemand ganz kurz und leicht verständlich erklären was hier los ist? Und wie ich die Lösung angehen sollte/könnte?
 
Zunächst: das was du da sieht ist kein Fehler sondern nur eine Warnung.
Ändern musst du an dem Code nichts solange du sicherstellt, dass auch wirklich eine TableColumn<Result, ? > übergeben wird.
Der Grund warum die Warnung auftaucht ist eigentlich recht Simple: In Java kann man keine Arrays aus parameterisierten Typen (Generics - also die Dinger <T > ) erstellen.

Was du ändern könntest: anstatt addAll zu nutzen kannst du auch einfsch 2 mal die add Methode aufrufen.
 
Die Warnung ist weg, aber ich verstehe leider nicht ganz warum die Lösung dafür einfach war addAll durch zwei mal add zu ersetzen. Inwiefern wirkt sich das darauf aus, dass Java keine Arrays aus parametisierten Typen erstellen kann? Ist die Zeile die mir die Warnung auswarf durch addAll ein parametisierter Typ gewesen?
Trotzdem Danke für die Erklärung!
 

Neue Themen


Zurück
Oben