ciao!
c'è qualcosa che mi sfugge sui generici.
allora, ho una classe con un metodo che legge un file json:
poi ho ad esempio una classe Book di questo tipo: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; } }
fin qui nessun problema.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; }
ora devo riempire una TableView in JavaFX.
questo il controller:
il System.out mi stampa gli oggetti Book, quindi direi che è tutto a posto.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 problema è la riga commentata.
questo il metodo observableArrayList (che fa parte del jdk ovviamente, non è fatto da me):
che modifiche dovrei fare secondo voi??codice:public static <E> ObservableList<E> observableArrayList(Collection<? extends E> col) { ObservableList<E> list = observableArrayList(); list.addAll(col); return list; }

Rispondi quotando