ciao!
c'è qualcosa che mi sfugge sui generici.
allora, ho una classe con un metodo che legge un file json:
codice:
public class ReadJson {
private final Gson gson;
public ReadJson() {
gson = new Gson();
}
public <T> List<T> readJson(File file, Class<T> type) throws IOException {
ArrayList<T> list = new ArrayList<>();
JsonParser parser = new JsonParser();
try (BufferedReader bf = new BufferedReader(new FileReader(file))) {
JsonArray jarray = parser.parse(new JsonReader(bf)).getAsJsonArray();
for (JsonElement e : jarray) {
T element = gson.fromJson(e, type);
list.add(element);
}
}
return list;
}
}
poi ho ad esempio una classe Book di questo tipo:
codice:
public class Book {
public int id;
public String title;
public String author;
public String editor;
public double price;
public String isbn;
public String note;
}
fin qui nessun problema.
ora devo riempire una TableView in JavaFX.
questo il controller:
codice:
public class ControllerMain<T> {
private ReadJson jsonRead = new ReadJson();
@FXML
private TableView tblFilm;
@FXML
private TextField txtSearch;
@FXML
public void initialize() {
try {
List<T> listBooks = jsonRead.readJson(new File(UrlAndPath.JSON_AUTORI), (Class<T>) Book.class);
System.out.println(listBooks);
//ObservableList<Book> list = FXCollections.observableArrayList(listBooks);
} catch (IOException ex) {
GenericDialog.showDialog(ex.getMessage(), Alert.AlertType.ERROR);
}
}
}
il System.out mi stampa gli oggetti Book, quindi direi che è tutto a posto.
il problema è la riga commentata.
questo il metodo observableArrayList (che fa parte del jdk ovviamente, non è fatto da me):
codice:
public static <E> ObservableList<E> observableArrayList(Collection<? extends E> col) {
ObservableList<E> list = observableArrayList();
list.addAll(col);
return list;
}
che modifiche dovrei fare secondo voi??