/ / Java Initialization Block - Java, swing, jtable, анонимен клас, инициализатор

Java Initialization Block - Java, swing, jtable, анонимен клас, инициализатор

Може ли някой да ми помогне да разбера следната конструкция? Имам проблеми с разбирането дали това е инициализатор или анонимна класа. Не съм запознат с този синтаксис.

   JTable jt = new JTable(data, fields) **{
public TableCellRenderer getCellRenderer(int row, int column) {
// TODO Auto-generated method stub
return renderer;
}
};**

Отговори:

6 за отговор № 1

Той създава анонимна вътрешна класа, която удължава JTable, и заменя метода getCellRenderer.

Дълго обяснение:

вашите създават клас, който разширява JTable без изрично да му придадете име вместо да използва стандартна декларация за клас:

public class ExtendedJTable extends JTable{}

Видимостта на този клас е ограничена доклас, в който тя е дефинирана и инстанция. Това е доста полезно например когато имате нужда, като в кода, който публикувахте, да замените метод (getCellRenderer ()) на определен клас (JTable), за някои цели, ограничени до текущия клас контекст.

Този подход има някои предимства, а също и някои ограничения. За по-задълбочена дискусия погледнете това статия.


2 за отговор № 2

Тук правите 2 неща:

  • създайте обект от клас, който разширява JTable. Това е анонимна класа, защото не е обявена отделно никъде другаде.
  • В този клас преименувате метода на JTable getCellRenderer (int ред, int колона);