Java:
public void recordDataResult(final List<RecordStatusData> data)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
RecordDataTableModel model = new RecordDataTableModel(data);
jTable1.setModel(model);
TableRowSorter sort = new TableRowSorter<RecordDataTableModel>(model);
jTable1.setRowSorter(sort);
}
});
}
});
Es geht mir hier um den Funktionsparameter „data“! Dieser wird in der „run“ – Funktion verwendet und dies funktioniert auch problemlos. wieso kann aber eine lokale Variable in einer anonymen Klasse einfach so verwendet werden? Kann es mir jemand erklären?
Was bewirkt das final (ohne geht es ja nicht)?
Die „run“ – Funktion des Runnable objekts kann ja irgendwo, irgendwann aufgerufen werden, wieso hat diese trotzdem den Zugriff auf die „data“ – Variable.
Ich würds verstehen, wenn es so funktionieren würde, indem man über einen konstruktor das data – Objekt übergibt (aber das da oben ist mir ein Rätsel):
Java:
public void recordDataResult(final List<RecordStatusData> data)
{
EventQueue.invokeLater(new Runnable(data)
{
public void run()
{
RecordDataTableModel model = new RecordDataTableModel(data);
jTable1.setModel(model);
TableRowSorter sort = new TableRowSorter<RecordDataTableModel>(model);
jTable1.setRowSorter(sort);
}
});
}
});