Clase ObjectMapper en Jackson
Asignador de objetos es una de las clases más importantes disponibles en el jackson biblioteca. Se utiliza para leer y escribir datos JSON. Es responsable de leer datos desde o hacia un archivo POJO y hacia y desde un modelo de árbol JSON.
Existen las siguientes características de la clase ObjectMapper:
- Admite conceptos avanzados como Polimorfismo y Reconocimiento de objetos.
- Es muy personalizable para trabajar con diferentes estilos de contenido JSON.
- Funciona como fábrica para el avance. Lector de objetos y Escritor de objetos clases.
La clase ObjectMapper se declara de la siguiente manera:
public class ObjectMapper extends ObjectCodec implements Versioned, Serializable
Clases anidadas
La siguiente tabla define las clases que extienden la clase ObjectMapper o, puede decir, clases anidadas de la clase ObjectMapper.
| Clase | Descripción |
|---|---|
| DefaultTypeResolverBuilder | es un personalizado TipoResolverBuilder clase que se usa para obtener los constructores de resolución de tipos, que podemos usar con 'escritura predeterminada'. |
| Escritura predeterminada | Para especificar el tipo de tipos, se utilizan enumeraciones con el método enableDefaultTyping(). |
Ahora, comprendamos los campos, constructores y métodos de la clase ObjectMapper:
Campos de la clase ObjectMapper
protected DefaultDeserializationContext _deserializationContext
Es un objeto de contexto de modelo que se almacena para permitir subclases personalizadas.
protected DeserializationConfig _deserializationConfig
Es un objeto de configuración que se utiliza para definir la configuración global básica para el proceso de deserialización.
JsonFactory protegido jsonFactory
Para crear una instancia de JsonParser y JsonGenerator, se utiliza JsonFactory.
Valores inyectables protegidos _Valores inyectables
Es un proveedor que se utiliza para inyectar valores en POJO deserializados.
ConfigOverrides protegidos _propertyOverrides
Se utiliza para acceder a las anulaciones de configuración por tipo actualmente activas.
protegido SimpleMixInResolver _mixIns
Es un mapeo que se utiliza para definir una forma de aplicar anotaciones combinadas. El mapeo se realiza de la siguiente manera:
Llave: Escriba para recibir anotaciones adicionales.
Valor: Tipo que tiene anotaciones para 'mezclar'
Conjunto protegido _registeredModuleTypes
Es un Conjunto que define el conjunto de tipos de módulos que se han registrado.
SerializationConfig protegido _serializationConfig
También es un objeto de configuración que se utiliza para definir la configuración global básica para el proceso de serialización.
ConcurrentHashMap protegido
Es un mapa que se utiliza para realizar un seguimiento de los deserializadores de nivel raíz. Es un mapa de nivel principal.
SerializerFactory protegido _serializerFactory
Es una fábrica que se utiliza para construir los serializadores.
SubtypeResolver protegido _subtypeResolver
Se utiliza para registrar subtipos y resolverlos en super/subtipos según sea necesario.
TypeFactory protegido _typeFactory
Es una fábrica que se utiliza para crear instancias de JavaType. Son necesarios para permitir que los módulos agreguen un manejo de tipos más personalizado.
protected DefaultSerializerProvider _serializerProvider
Es un objeto que se encarga de gestionar el acceso a los serializadores utilizados para la serialización.
Configuración de base estática protegida DEFAULT_BASE
Son las configuraciones básicas las que incluyen los valores predeterminados utilizados para todas las instancias de ObjectMapper.
Constructores de la clase ObjectMapper
Existen los siguientes constructores de la clase ObjectMapper:
| Constructor | Descripción |
|---|---|
| Asignador de objetos() | Es un constructor predeterminado que se usa para construir una instancia que usa el valor predeterminado. JsonFactory, proveedor de serializador, y BeanSerializerFactory. |
| ObjectMapper (fábrica JsonFactory) | Se utiliza para construir una instancia que utiliza el JsonFactory dado. El JsonFactory dado se utiliza para construir JsonParsers y/o Generadores Json. |
| ObjectMapper (fábrica JsonFactory, proveedor SerializerProvider1, proveedor DeserializerProvider2) | Se utiliza para construir una instancia que utiliza lo dado. JsonFactory, proveedor de serializador, y Proveedor deserializador. El JsonFactory dado se utiliza para construir JsonParsers y/o Generadores Json. |
| ObjectMapper protegido (asignador de ObjectMapper) | Es un constructor de copia para soportar copy(). |
Métodos de clase ObjectMapper
La clase ObjectMapper define los siguientes métodos:
| Método | Tipo de devolución | Descripción |
|---|---|---|
| _checkInvalidCopy(exp clase) | vacío | Se utiliza para comprobar una copia no válida. |
| _configAndWriteValue(JsonGenerator g, valor del objeto) | vacío | Se utiliza para configurar el generador cuando sea necesario y luego realizar la funcionalidad de escritura. |
| _convert(Objeto deValor, JavaType aValueType) | Objeto | Se utiliza para obtener la implementación de conversión real. Aquí, los métodos de lectura y escritura no se utilizan para el código. |
| _initForReading(JsonParserp) | JsonToken | Se utiliza para garantizar si el analizador determinado está listo para leer contenido para el enlace de datos o no. |
| _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) | JsonDeserializador | Para el valor de nivel raíz pasado, si queremos ubicar el deserializador, usamos este método. |
| _newReader (configuración DeserializationConfig) Método similar:
| Lector de objetos | Es un método de fábrica, es decir, que se utiliza para obtener las instancias de ObjectReader del subtipo adecuado. Para utilizar este método, es necesario que las subclases se anulen. |
| _newWriter (configuración SerializationConfig) Métodos similares:
| Escritor de objetos | Es un método de fábrica, es decir, que se utiliza para obtener las instancias de ObjectWriter del subtipo adecuado. Para utilizar este método, es necesario que las subclases se anulen. |
| _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) | Objeto | Se utiliza para obtener un objeto que define la operación de lectura y vinculación de valores. |
| _serializerProvider (configuración SerializationConfig) | Proveedor de serializador predeterminado | Es un método auxiliar reemplazable que se utiliza para construir SerializerProvider. |
| aceptarJsonFormatVisitor(tipo de clase, visitante JsonFormatVisitorWrapper) Método similar:
| vacío vacío | Si queremos visitar la jerarquía de tipos de un tipo particular con el visitante especificado, utilizamos este método. |
| addHandler(DeserializationProblemHandler h) | Asignador de objetos | Para manejar problemas específicos durante la deserialización, usamos un DeserializationProblemHandler específico y, para agregar el controlador, usamos este método. |
| addMixIn(Clase objetivo, Clase mixinSource) | Asignador de objetos | Para utilizar la anotación combinada para una clase o interfaz de aumento específica, utilizamos este método para agregarla. |
| canDeserialize (tipo JavaType) | Booleano | Se utiliza para comprobar si el asignador puede deserializar un objeto de un tipo específico o no. |
| canDeserialize (tipo JavaType, causa AtomicReference) | Booleano | Es similar al método anterior. La única diferencia es que puede devolver el elemento arrojable que se arrojó en el momento de construir el serializador. El arrojable se puede utilizar para resolver el problema real. |
| canSerialize (tipo de clase) | Booleano | Se utiliza para comprobar si el asignador puede serializar un objeto de un tipo específico o no. |
| canSerialize (tipo de clase, causa AtomicReference) | Booleano | Es similar al método anterior. La única diferencia es que puede devolver el elemento arrojable que se arrojó en el momento de construir el serializador. El arrojable se puede utilizar para resolver el problema real. |
| borrarProblemHandlers() | Asignador de objetos | Es uno de los métodos que se utiliza para eliminar todas las instancias de DeserializationProblemHandlers del asignador que están registradas. |
| configurar (DeserializationFeature f, estado booleano) métodos similares:
| Asignador de objetos | Se utiliza para cambiar el estado de una función de deserialización activada/desactivada, generador Json, JsonParser, asignador o serialización para el asignador de objetos, instancias de generador, instancias de analizador, instancia de asignador o asignador de objetos. |
| tipo de construcción (tipo t) | Tipo Java | Si queremos construir JavaType a partir de un tipo determinado sin contexto explícito, usamos este método. |
| convertValue(Objeto deValor, Clase aTipo de Valor) Métodos similares:
| t | Si queremos realizar una conversión en dos pasos de un valor determinado en una instancia de un tipo de valor determinado, utilizamos el método converValue(). |
| crearArrayNode() | Nododematriz | Se utiliza para crear ArrayNode. |
| defaultClassIntrospector() | Introspector de clase | Si queremos utilizar el ClassIntrospector predeterminado, utilizamos este método auxiliar reemplazable para construirlo. |
| desactivar (función de función deserialización) Métodos similares:
| Asignador de objetos | Se utiliza para deshabilitar DeserializationConfig, JsonGenerator.Features dado para instancias de analizador, JsonParser.Features para instancias de analizador del asignador de objetos. |
| desactivar escritura predeterminada() | Asignador de objetos | Muchas veces necesitamos desactivar la inclusión automática de información de tipo, y para ello utilizamos este método. |
habilitar (función de característica deserialización)
| Asignador de objetos | Se utiliza para habilitar DeserializationConfig, JsonGenerator.Features dado para instancias de analizador, JsonParser.Features para instancias de analizador del asignador de objetos. |
| habilitar escritura predeterminada() Métodos similares:
| Asignador de objetos | Para utilizar la inclusión automática de información de tipo para la deserialización de tipos polimórficos, utilizamos este método para habilitarlo. |
| encontrarMódulosAndRegister() | Asignador de objetos | Es similar al método mapper.registerModules(mapper.findModules()). |
| buscarMódulos() Métodos similares:
| Lista | Se utiliza para localizar métodos disponibles. El método utiliza la función JDK ServiceLoader con SPI proporcionado por el módulo. |
| obtener formato de fecha() | Formato de fecha | Se utiliza para obtener el formato de la fecha. |
| getDeserializationConfig() | Configuración de deserialización | Se utiliza para obtener el objeto DeserializationConfig predeterminado compartido. El objeto devuelto define los ajustes de configuración para la deserialización. |
| getDeserializationContext() | Contexto de deserialización | Se utiliza para obtener el DeserializationContext actual. |
| obtenerFábrica() | JsonFábrica | Si el asignador necesita construir un analizador y generadores Json, necesita json factory y, para conseguirlo, utilizamos el método getFactory(). |
| obtenerValoresInyectables() | Valores inyectables | Se utiliza para obtener valores inyectables. |
| getJsonFactory() | JsonFábrica | Es un método obsoleto para obtener la fábrica Json. |
| obtenerFábricaNodo() | JsonNodeFábrica | Se utiliza para obtener el JsonNodeFactory que utiliza el asignador al momento de construir directamente instancias raíz de JsonNode para árboles. |
| getPropertyNamingStrategy() | Estrategia de denominación de propiedades | Como su nombre lo indica, se utiliza para la estrategia de denominación de la propiedad. |
| getSerializationConfig() | Configuración de serialización | Se utiliza para obtener el objeto SerializationConfig predeterminado compartido. El objeto devuelto define los ajustes de configuración para la serialización. |
| getSerializerFactory() | SerializadorFábrica | Se utiliza para obtener el SerializerFactory actual. |
| getSerializerProvider() | Proveedor de serializador | Es un descriptor de acceso para la fábrica, que se utiliza para crear instancias llamando a DefaultSerializerProvider.createInstance(SerializationConfig, SerializerFactory). |
| getSerializerProviderInstance() | Proveedor de serializador | Es un descriptor de acceso que se usa para construir y devolver una instancia de SerializerProvider, que podemos usar para acceder a los serializadores. |
| getSubtypeResolver() | SubtipoResolver | Se utiliza para acceder al solucionador de subtipos en uso. |
| getTypeFactory() | TipoFábrica | Es un descriptor de acceso que se utiliza para obtener una instancia de TypeFactory actualmente configurado. |
| obtenerVisibilityChecker() | Comprobador de visibilidad | Se utiliza para acceder al verificador de visibilidad actualmente configurado. |
| isEnabled (Característica de deserialización f) Métodos similares:
| Booleano | El método isEnable() y sus variaciones se utilizan para comprobar si una función específica de deserialización, JsonFactory, JsonGenerator, JsonParser, Mapper o Serialización está habilitada o no. |
| mezclarInCount() | En t | Se utiliza para obtener el recuento de mixIn. |
| lector() Métodos similares:
| Lector de objetos | El método lector() y sus variaciones son los métodos de fábrica que se utilizan para construir una instancia de ObjectReader. Según el requisito, podemos pasar la variante de codificación Base64 para datos binarios codificados en Base64, atributos predeterminados, funciones habilitadas, valores inyectables, JsonNodeFactory para construir árboles JSON. |
| lectorPara(tipo de clase) | Lector de objetos | Es un método de fábrica que se utiliza para construir ObjectReader, permitiendo operaciones de lectura o actualización para instancias del tipo especificado. |
| lectorPara(tipo JavaType) | Lector de objetos | Es un método de fábrica que se utiliza para construir ObjectReader, lo que permite operaciones de lectura o actualización para instancias de JavaType especificado. |
| lectorPara(TipoTipo de referencia) | Lector de objetos | Es un método de fábrica que se utiliza para construir ObjectReader, lo que permite operaciones de lectura o actualización para instancias de TypeReference determinada. |
| lectorParaActualizar(Valor del objetoParaActualizar) | Lector de objetos | Es un método de fábrica que se utiliza para construir ObjectReader y permite operaciones de actualización para el objeto dado. |
| lectorConVista(vista de clase) | Lector de objetos | Es un método de fábrica que se utiliza para construir ObjectReader, lo que permite deserialización de objetos con una vista JSON determinada. |
readTree(byte[] contenido)
| JsonNodo O t | readTree() y sus variaciones se utilizan para deserializar el contenido JSON como un árbol expresado mediante un conjunto de instancias de JsonNode. |
| readValue(byte[] src, Tipo de valor de clase) Métodos similares
| t O MapeoIterador | readValue() y sus variaciones se utilizan para deserializar contenido JSON
|
| readValues(JsonParser p, Tipo de valor de clase) Métodos similares:
| MapeoIterador | readValues() y sus variaciones se utilizan para leer la secuencia de objetos del flujo del analizador. |
| registrarseModule(Módulo módulo) Métodos similares:
| Asignador de objetos | RegisterModule() y sus variaciones se utilizan para registrar un módulo que tiene la capacidad de ampliar la funcionalidad proporcionada por el asignador. |
| registrarSubtipos(NamedType... tipos) | vacío | Se utiliza para registrar la clase dada como un subtipo. Al hacer esto, la resolución basada en el nombre del tipo puede vincular supertipos con subtipos. |
| setAnnotationIntrospector(AnnotationIntrospector ai) | Asignador de objetos | Se utiliza para configurar AnnotationIntrospector, que utiliza la instancia del asignador tanto para la serialización como para la deserialización. |
| setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) | Asignador de objetos | Se utiliza para cambiar la instancia de AnnotationIntrospector utilizada por la instancia del asignador actual para la serialización y deserialización. |
| setBase64Variant(Base64Variante v) | Asignador de objetos | Se utiliza para configurar la Base64Variant predeterminada que utilizarán los serializadores y deserializadores de byte[]. |
| setConfig(Configuración de deserializaciónConfig) | Asignador de objetos | Para realizar la anulación del objeto DeserializationConfig subyacente, utilizamos este método. |
| setConfig (configuración de SerializationConfig) | Asignador de objetos | Para realizar la anulación del objeto SerializationConfig subyacente que tiene ajustes de configuración específicos de serialización, utilizamos este método. |
| setDateFormat(Formato de fechaFormato de fecha) | Asignador de objetos | Se utiliza para configurar el DateFormat predeterminado para usarlo al momento de serializar valores de tiempo como cadenas o deserializar desde cadenas JSON. |
| setDefaultPrettyPrinter(PrettyPrinter pp) | Asignador de objetos | Se utiliza para especificar PrettyPrinter para usarla cuando la 'impresión bonita predeterminada' está habilitada. |
| setDefaultTyping(escritor TypeResolverBuilder) | Asignador de objetos | Se utiliza para permitir la inclusión automática de información de tipo. |
| setHandlerInstantiator(HandlerInstantiator hola) | Objeto | Se utiliza para configurar HandlerInstantiator para crear instancias de controladores. |
| setFilterProvider(FilterProvider proveedor de filtro) | Asignador de objetos | Se utiliza para configurar el asignador actual para que utilice FilterProvider especificado para asignar ID de filtro a instancias de filtro reales. |
| setInjectableValues(InjectableValues inyectableValues) | Asignador de objetos | Se utiliza para configurar InjectableValues que se utiliza para encontrar valores para inyectar. |
| setLocale(Local l) | Asignador de objetos | Se utiliza para anular la configuración regional predeterminada que se utilizará para formatear. |
| setMixInResolver(ClassIntrospector.MixInResolver resolver) | Asignador de objetos | Usamos este método para especificar el solucionador dado para ubicar las clases combinadas que se usarán, anulando las asignaciones agregadas directamente. |
| setMixInAnnotations(Mapa | vacío | Es un método depreciado para definir la anotación combinada. |
| setNodeFactory(JsonNodeFactoryf) | Asignador de objetos | Se utiliza para especificar JsonNodeFactory a utilizar para construir nodos de árbol a nivel raíz. |
| setMixIns(Mapa | Asignador de objetos | Se utiliza para definir las anotaciones combinadas que se utilizarán para aumentar las anotaciones que tienen las clases procesables. |
| setPropertyInclusion(JsonInclude.Value incluido) | Asignador de objetos | Se utiliza para establecer la estrategia de inclusión de propiedad POJO predeterminada para la serialización. |
| setPropertyNamingStrategy(PropertyNamingStrategy s) | Asignador de objetos | Se utiliza para establecer la estrategia de nomenclatura de propiedad personalizada que se utilizará. |
| setSerializerFactory(SerializerFactory f) | Asignador de objetos | Se utiliza para configurar el SerializerFactory específico que se utilizará para construir serializadores (bean). |
| setSerializerProvider (DefaultSerializerProvider p) | Asignador de objetos | Se utiliza para configurar la instancia de SerializerProvider 'modelo' para usarla como base para las instancias de proveedor reales que se utilizarán para manejar el almacenamiento en caché de instancias de JsonSerializer. |
| setSubtypeResolver(SubtypeResolver str) | Asignador de objetos | Se utiliza para configurar el solucionador de subtipo personalizado que se utilizará. |
| setTimeZone(Zona horaria tz) | Asignador de objetos | Se utiliza para anular la zona horaria predeterminada que se utilizará para formatear. |
| setTypeFactory(TipoFactory f) | Asignador de objetos | Se utiliza para anular la instancia de TypeFactory, que utiliza el asignador actual. |
setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibilidad de visibilidad)
| Asignador de objetos | setVisibility() y su variación se utilizan para configurar el VisibilityChecker actualmente configurado. La instancia de ObjectMapper devuelta se utiliza para comprobar si el elemento de propiedad dado se puede detectar automáticamente o no. |
| árbolAsTokens(TreeNode n) | JsonParser | Se utiliza para construir un JsonParser a partir de una representación de árbol JSON. |
| treeToValue(TreeNode n, Tipo de valor de clase) | t | Se utiliza para vincular los datos que contiene el árbol JSON dado en un tipo de valor específico. |
| versión() | Versión | Se utiliza para obtener la información de la versión almacenada y leída en el jar que contiene esta clase. |
escritor()
| Escritor de objetos | Write() y sus variaciones se utilizan para construir ObjectWriter con la configuración predeterminada, dada la variante de codificación Base64 para datos binarios codificados en Base64, detalles de escape de caracteres para la salida, atributos predeterminados, DateFormat, proveedor de filtro, objeto de esquema para JsonGenerator utilizado para escribir contenido. Bonita impresora para sangría o función habilitada. |
| escritorPara(Tipo raíz de clase) - | Escritor de objetos | Se utiliza para construir ObjectWriter para serializar los objetos utilizando un tipo de raíz específico en lugar del tipo de valor del tiempo de ejecución real. |
| escritorPara(JavaType tiporaiz) | Escritor de objetos | Se utiliza para construir ObjectWriter para serializar los objetos utilizando un tipo de raíz específico en lugar del tipo de valor del tiempo de ejecución real. |
| escritorPara(TipoReferencia tiporaíz) | Escritor de objetos | Se utiliza para construir ObjectWriter para serializar los objetos utilizando un tipo de raíz específico en lugar del tipo de valor del tiempo de ejecución real. |
| escritorWithDefaultPrettyPrinter() | Escritor de objetos | Es un método de fábrica que se utiliza para construir ObjectWriter para serializar los objetos utilizando la bonita impresora predeterminada para sangría. |
escritorConTipo(Tipo raíz de clase)
| Escritor de objetos | Estos métodos se deprecian y, en lugar de ellos, utilizamos el método writeFor(TypeReference). |
| escritorConView(Clase serializaciónView) | Escritor de objetos | Es un método de fábrica que se utiliza para construir ObjectWriter para serializar objetos utilizando la vista JSON especificada. |
| writeTree(JsonGenerator jgen, JsonNode rootNode) | vacío | Se utiliza para serializar el árbol JSON proporcionado mediante el JsonGenerator proporcionado. |
| writeValue(Archivo resultadoArchivo, Valor del objeto) | vacío | Se utiliza para serializar el valor de Java como salida JSON y escribirlo en el archivo dado. archivo. |
| writeValue (JsonGenerator g, valor del objeto). | vacío | Se utiliza para serializar valores de Java como salida JSON utilizando el dado Generador Json. |
| writeValue (Salida de salida, valor del objeto) | vacío | Se utiliza para serializar el valor de Java como salida JSON utilizando el valor dado Flujo de salida. |
| writeValue(Escritor w, Valor del objeto) | vacío | Se utiliza para serializar valores de Java como salida JSON utilizando el dado Escritor. |
| writeValueAsBytes(Valor del objeto) | byte[] | Se utiliza para serializar valores de Java como una matriz de bytes. |
| writeValueAsString(Valor del objeto) | Cadena | Se utiliza para serializar valores de Java como una cadena. |
JacksonExample.java
//import required classes and package if any package javaTpoint.Jackson; import java.io.IOException; import java.util.List; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; //create class JacksonExample to understand implementation of Jackson public class JacksonExample { // main() method start public static void main(String args[]){ // create an instance of ObjectMapper class ObjectMapper mapper = new ObjectMapper(); // create a JSON string of employee details to deserilized object String stdString = '{
'students' : [
{
'stdId':'001',
'course':'MCA','+'
'firstName':'Nicholas',
'lastName':'Clemens',
'preferredFullName':'Nicholas Clemens','+'
'enrol':'S010',
'region':'indian',
'phoneNumber':'408-1234567',
'emailAddress''+':'[email protected]'
},
{
'stdId':'002',
'course':'BCA','+'
'firstName':'Sharon',
'lastName':'Lorenz',
'preferredFullName':'Sharon Lorenz','+'
'enrol':'S011',
'region':'indian',
'phoneNumber':'408-1111111',
'emailAddress''+':'[email protected]'
},
{
'stdId':'003',
'course':'Btech','+'
'firstName':'Brittany',
'lastName':'Hart',
'preferredFullName':'Brittany Hart',
''+'enrol':'S012',
'region':'indian',
'phoneNumber':'408-2222222',
'emailAddress':'[email protected]'
}
]
}'; try{ // use ObjectMapper for mapping JSON to Student Students students = mapper.readValue(stdString, Students.class); // print students System.out.println(students); // serialize students into json string stdString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(students); System.out.println(stdString); }catch (JsonParseException e) { e.printStackTrace(); }catch (JsonMappingException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } } } //create Students class class Students { public List students; // getter and setter public List getStudent() { return students; } public void setStudent(List students) { this.students = students; } } class Student { // declare variables private String stdId; private String course; private String firstName; private String lastName; private String preferredFullName; private String enrol; private String region; private String phoneNumber; private String emailAddress; public Student(){ } // getter/setters for all variables public String getStdId() { return stdId; } public void setStdId(String stdId) { this.stdId = stdId; } public String getCourse() { return course; } public void getCourse(String course) { this.course = course; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getPreferredFullName() { return preferredFullName; } public void setPreferredFullName(String preferredFullName) { this.preferredFullName = preferredFullName; } public String getEnrol() { return enrol; } public void setEnrol(String enrol) { this.enrol = enrol; } public String getRegion() { return region; } public void setRegion(String region) { this.region = region; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } public String toString(){ return 'Employee [ Student Id: '+stdId+', Course: '+course+ '' + ', First Name: '+firstName+ ', Last Name: '+lastName+ '' + ', Name: '+preferredFullName+ ', Enrol No: '+enrol+ '' + ', Region: '+region+ ', Phone Number: '+phoneNumber+ '' + ', Email Address: '+emailAddress+ ' ]'; } } Producción: