/ / Bloque de inicialización de Java - java, swing, jtable, anonymous-class, initializer

Bloque de inicialización de Java - java, swing, jtable, anonymous-class, initializer

¿Puede alguien ayudarme a entender la siguiente construcción? Tengo problemas para entender si esto es un inicializador o una clase anónima. No estoy familiarizado con esta sintaxis.

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

Respuestas

6 para la respuesta № 1

Crea una clase interna anónima que amplía JTable y reemplaza el método getCellRenderer.

Explicación larga:

está creando una clase que amplía JTable sin asignarle un nombre explícitamente en lugar de usar una declaración de clase estándar:

public class ExtendedJTable extends JTable{}

La visibilidad de esta clase se limita a laClase dentro de la cual se define e instancia. Es muy útil, por ejemplo, cuando necesita, como en el código que publicó, anular un método (getCellRenderer ()) de una clase particular (JTable), para algunos propósitos, limitado al contexto de la clase actual.

Este enfoque tiene algunos beneficios y también algunas limitaciones. Para una discusión más profunda echar un vistazo a esto artículo.


2 para la respuesta № 2

Estás haciendo 2 cosas aquí:

  • crear un objeto de una clase que extiende JTable. Esta es una clase anónima porque no se declara por separado en ningún otro lugar.
  • En esta clase, reemplaza el método getCellRenderer de JTable (int row, int column);