por - Bloque de inicialización de Java
directivas angular 4 ejemplos (2)
¿Alguien puede ayudarme a entender el siguiente constructo? 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;
}
};**
Crea una clase interna anónima que extiende JTable y anula el método getCellRenderer.
Larga explicación
estás creando una clase que amplía JTable sin asignarle explícitamente un nombre en lugar de usar una declaración de clase estándar:
public class ExtendedJTable extends JTable{}
La visibilidad de esta clase está limitada a la clase dentro de la cual está definida e instanciada. Es bastante útil, por ejemplo, cuando necesita, como en el código que publicó, anular un método (getCellRenderer ()) de una clase en particular (JTable), para algunos fines limitados al contexto de clase actual.
Este enfoque tiene algunos beneficios y también algunas limitaciones. Para una discusión más profunda, eche un vistazo a este artículo .
Estás haciendo 2 cosas aquí:
- crea un objeto de una clase que extiende JTable. Esta es una clase anónima porque no está declarada por separado en ningún otro lado.
- En esta clase, usted anula el método getCellRenderer de JTable (int row, int column);