ObjectMapper-klass i Jackson
ObjectMapper är en av de viktigaste klasserna som finns i Jackson bibliotek. Den används för att läsa och skriva JSON-data. Den ansvarar för att läsa data från eller till POJO-fil och till och från en JSON-trädmodell.
Det finns följande egenskaper hos ObjectMapper-klassen:
- Den stöder avancerade koncept som t.ex Polymorfism och Objektigenkänning.
- Det är mycket anpassningsbart att arbeta med olika stilar av JSON-innehåll.
- Det fungerar som en fabrik för förskottet Objektläsare och ObjectWriter klasser.
ObjectMapper-klassen deklareras på följande sätt:
public class ObjectMapper extends ObjectCodec implements Versioned, Serializable
Kapslade klasser
Följande tabell definierar klasserna som utökar ObjectMapper-klassen eller, kan säga, kapslade klasser av ObjectMapper-klassen.
| Klass | Beskrivning |
|---|---|
| DefaultTypeResolverBuilder | Det är en skräddarsydd TypeResolverBuilder klass som används för att få typupplösarbyggarna, som vi kan använda med 'standardtypning'. |
| DefaultTyping | För att specificera typen av typer används uppräkningar med metoden enableDefaultTyping() . |
Låt oss nu förstå fälten, konstruktörerna och metoderna i ObjectMapper-klassen:
Fält i klassen ObjectMapper
protected DefaultDeserializationContext _deserializationContext
Det är ett ritningskontextobjekt som lagras för att tillåta anpassade underklasser.
protected DeserializationConfig _deserializationConfig
Det är ett konfigurationsobjekt som används för att definiera de grundläggande globala inställningarna för avserialiseringsprocessen.
skyddad JsonFactory jsonFactory
För att skapa en instans av JsonParser och JsonGenerator används JsonFactory.
skyddade InjectableValues _injectableValues
Det är en leverantör som används för att injicera värdena i avserialiserade POJO:er.
skyddade ConfigOverrides _propertyOverrides
Den används för att komma åt de för närvarande aktiva konfigurationsöverstyrningarna per typ.
skyddade SimpleMixInResolver _mixIns
Det är en mappning som används för att definiera ett sätt att tillämpa inblandningskommentarer. Kartläggning görs på följande sätt:
Nyckel: Skriv för att få ytterligare kommentarer.
Värde: Typ som har kommentarer att 'blanda in'
protected Set _registeredModuleTypes
Det är en uppsättning som definierar uppsättningen av modultyper som har registrerats.
skyddad SerializationConfig _serializationConfig
Det är också ett konfigurationsobjekt som används för att definiera de grundläggande globala inställningarna för serialiseringsprocessen.
skyddad ConcurrentHashMap
Det är en karta som används för att hålla reda på de-serializers på rotnivå. Det är en karta på huvudnivå.
skyddad SerializerFactory _serializerFactory
Det är en fabrik som används för att konstruera serializers.
skyddad SubtypeResolver _subtypeResolver
Den används för att registrera undertyper och för att lösa dem för super/undertyper efter behov.
skyddad TypeFactory _typeFactory
Det är en fabrik som används för att skapa JavaType-instanser. De krävs för att tillåta moduler att lägga till mer anpassad typhantering.
protected DefaultSerializerProvider _serializerProvider
Det är ett objekt som ansvarar för att hantera åtkomsten till serialiserare som används för serialisering.
skyddade statiska BaseSettings DEFAULT_BASE
Det är basinställningar som inkluderar standardinställningar som används för alla ObjectMapper-instanser.
Konstruktörer av ObjectMapper-klassen
Det finns följande konstruktörer av ObjectMapper-klassen:
| Konstruktör | Beskrivning |
|---|---|
| ObjectMapper() | Det är en standardkonstruktor som används för att konstruera en instans som använder standard JsonFactory, SerializerProvider, och BeanSerializerFactory. |
| ObjectMapper(JsonFactory factory) | Den används för att konstruera en instans som använder den givna JsonFactory. Den givna JsonFactory används för att konstruera JsonParsers och/eller JsonGenerators. |
| ObjectMapper (JsonFactory factory, SerializerProvider provider1, DeserializerProvider provider2) | Den används för att konstruera en instans som använder det givna JsonFactory, SerializerProvider, och DeserializerProvider. Den givna JsonFactory används för att konstruera JsonParsers och/eller JsonGenerators. |
| skyddad ObjectMapper (ObjectMapper mapper) | Det är en copy-konstruktor för att stödja copy(). |
ObjectMapper klassmetoder
ObjectMapper-klassen definierar följande metoder:
| Metod | Returtyp | Beskrivning |
|---|---|---|
| _checkInvalidCopy(Class exp) | tomhet | Den används för att kontrollera ogiltig kopia. |
| _configAndWriteValue(JsonGenerator g, objektvärde) | tomhet | Den används för att konfigurera generatorn vid behov och sedan utföra skrivfunktionen. |
| _convert(Object fromValue, JavaType toValueType) | Objekt | Den används för att få den faktiska konverteringsimplementeringen. Här används inte läs- och skrivmetoder för koden. |
| _initForReading(JsonParser p) | JsonToken | Den används för att säkerställa om den givna parsern är redo att läsa innehåll för databindning eller inte. |
| _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) | JsonDeserializer | För det godkända rotnivåvärdet, om vi vill hitta de-serializern, använder vi den här metoden. |
| _newReader(DeserializationConfig config) Liknande metod:
| Objektläsare | Det är en fabriksmetod, d.v.s. används för att få ObjectReader-instanserna av rätt undertyp. För att använda denna metod är det nödvändigt att underklasserna måste åsidosätta. |
| _newWriter(SerializationConfig config) Liknande metoder:
| ObjectWriter | Det är en fabriksmetod, d.v.s. används för att få ObjectWriter-instanserna av rätt undertyp. För att använda denna metod är det nödvändigt att underklasserna måste åsidosätta. |
| _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) | Objekt | Det används för att få ett objekt som definierar värdeläsning och bindningsoperation. |
| _serializerProvider(SerializationConfig config) | DefaultSerializerProvider | Det är en överstyrbar hjälpmetod som används för att konstruera SerializerProvider. |
| acceptJsonFormatVisitor(Klasstyp, JsonFormatVisitorWrapper-besökare) Liknande metod:
| tomhet tomhet | Om vi vill besöka typhierarkin för en viss typ med den angivna besökaren använder vi denna metod. |
| addHandler(DeserializationProblemHandler h) | ObjectMapper | För att hantera specificerade problem under avserialisering använder vi en specificerad DeserializationProblemHandler, och för att lägga till hanteraren använder vi denna metod. |
| addMixIn(Class target, Class mixinSource) | ObjectMapper | För att använda inblandningskommentarer för specificerad förstärkningsklass eller gränssnitt använder vi den här metoden för att lägga till den. |
| canDeserialize (JavaType-typ) | Boolean | Den används för att kontrollera om mapparen kan avserialisera ett objekt av en angiven typ eller inte. |
| canDeserialize (JavaType-typ, AtomicReference-orsak) | Boolean | Det liknar den tidigare metoden. Den enda skillnaden är att den kan returnera den kastbara som kastades vid tidpunkten för konstruktionen av serializern. Den kastbara kan användas för att ta reda på det faktiska problemet. |
| canSerialize (Klasstyp) | Boolean | Den används för att kontrollera om mapparen kan serialisera ett objekt av en angiven typ eller inte. |
| canSerialize (Klasstyp, AtomicReference orsak) | Boolean | Det liknar den tidigare metoden. Den enda skillnaden är att den kan returnera den kastbara som kastades vid tidpunkten för konstruktionen av serializern. Den kastbara kan användas för att ta reda på det faktiska problemet. |
| clearProblemHandlers() | ObjectMapper | Det är en av metoderna som används för att ta bort alla DeserializationProblemHandlers-instanser från mapparen som är registrerade. |
| konfigurera (DeserializationFeature f, booleskt tillstånd) liknande metoder:
| ObjectMapper | Den används för att ändra tillståndet för en på/av avserialisering, Json Generator, JsonParser, Mapper eller Serialization-funktion för objektmapparen, generatorinstanserna, parsarinstanserna, mappningsinstansen eller objektmapparen. |
| constructType(Type t) | JavaType | Om vi vill konstruera JavaType av en given typ utan explicit kontext, använder vi denna metod. |
| convertValue(Object fromValue, Class toValueType) Liknande metoder:
| T | Om vi vill utföra en tvåstegsomvandling av ett givet värde till en instans av en given värdetyp använder vi metoden converValue() . |
| createArrayNode() | ArrayNode | Den används för att skapa ArrayNode. |
| defaultClassIntrospector() | KlassIntrospektör | Om vi vill använda standardinställningen ClassIntrospector, använder vi denna Overridable-hjälparmetod för att konstruera den. |
| inaktivera (DeserializationFeature-funktion) Liknande metoder:
| ObjectMapper | Den används för att inaktivera givna DeserializationConfig, JsonGenerator.Features för parser-instanser, JsonParser.Features för parser-instanser av objektmapparen. |
| disableDefaultTyping() | ObjectMapper | Många gånger måste vi inaktivera den automatiska inkluderingen av typinformation, och för detta ändamål använder vi denna metod. |
aktivera (DeserializationFeature-funktion)
| ObjectMapper | Den används för att aktivera den givna DeserializationConfig, JsonGenerator.Features för parser-instanser, JsonParser.Features för parser-instanser av objektmapparen. |
| enableDefaultTyping() Liknande metoder:
| ObjectMapper | För att använda automatisk inkludering av typinformation för avserialisering av polymorfa typer, använder vi denna metod för att aktivera den. |
| findAndRegisterModules() | ObjectMapper | Det liknar metoden mapper.registerModules(mapper.findModules()). |
| findModules() Liknande metoder:
| Lista | Den används för att hitta tillgängliga metoder. Metoden använder JDK ServiceLoader-faciliteten med modulförsedd SPI. |
| getDateFormat() | Datumformat | Det används för att få formatet på datumet. |
| getDeserializationConfig() | DeserializationConfig | Det används för att hämta det delade standardobjektet DeserializationConfig. Det returnerade objektet definierar konfigurationsinställningarna för avserialisering. |
| getDeserializationContext() | DeserializationContext | Den används för att få den aktuella DeserializationContext. |
| getFactory() | JsonFactory | Om mapparen behöver konstruera en Json-parser och generatorer behöver den json factory, och för att få det använder vi metoden getFactory(). |
| getInjectableValues() | Injicerbara värden | Det används för att få injicerbara värden. |
| getJsonFactory() | JsonFactory | Det är en föråldrad metod för att få Json-fabriken. |
| getNodeFactory() | JsonNodeFactory | Den används för att hämta JsonNodeFactory som används av mapparen vid tidpunkten för att direkt konstruera root JsonNode-instanser för Trees. |
| getPropertyNamingStrategy() | PropertyNamingStrategy | Som namnet antyder är den van vid namnstrategin för fastigheten. |
| getSerializationConfig() | SerializationConfig | Det används för att hämta det delade standardobjektet SerializationConfig. Det returnerade objektet definierar konfigurationsinställningarna för serialisering. |
| getSerializerFactory() | SerializerFactory | Den används för att hämta den nuvarande SerializerFactory. |
| getSerializerProvider() | SerializerProvider | Det är en accessor för fabriken, som används för att skapa instanser genom att anropa DefaultSerializerProvider.createInstance(SerializationConfig, SerializerFactory). |
| getSerializerProviderInstance() | SerializerProvider | Det är en accessor som används för att konstruera och returnera en instans av SerializerProvider, som vi kan använda för att komma åt serializers. |
| getSubtypeResolver() | SubtypeResolver | Den används för att komma åt den undertypslösare som används. |
| getTypeFactory() | TypFactory | Det är en accessor som används för att få en instans av den för närvarande konfigurerade TypeFactory. |
| getVisibilityChecker() | VisibilityChecker | Den används för att komma åt den för närvarande konfigurerade synlighetskontrollen. |
| isEnabled(DeserializationFeature f) Liknande metoder:
| Boolean | Metoden isEnable() och dess varianter används för att kontrollera om en given deserialiseringsspecifik, JsonFactory, JsonGenerator, JsonParser, Mapper eller Serialization-funktion är aktiverad eller inte. |
| mixInCount() | int | Den används för att få räkningen av mixIn. |
| läsare() Liknande metoder:
| Objektläsare | Reader()-metoden och dess variationer är fabriksmetoderna som används för att konstruera en instans av ObjectReader. Baserat på kravet kan vi skicka Base64-kodningsvarianten för Base64-kodad binär data, standardattribut, aktiverade funktioner, injicerbara värden, JsonNodeFactory för att konstruera JSON-träd. |
| readerFor(Klasstyp) | Objektläsare | Det är en fabriksmetod som används för att konstruera ObjectReader, som tillåter läs- eller uppdateringsoperationer för instanser av den angivna typen. |
| readerFor(JavaType-typ) | Objektläsare | Det är en fabriksmetod som används för att konstruera ObjectReader, som tillåter läs- eller uppdateringsoperationer för instanser av specificerad JavaType. |
| readerFor(TypeReference type) | Objektläsare | Det är en fabriksmetod som används för att konstruera ObjectReader, som tillåter läs- eller uppdateringsoperationer för instanser av given TypeReference. |
| readerForUpdating(Object valueToUpdate) | Objektläsare | Det är en fabriksmetod som används för att konstruera ObjectReader som tillåter uppdateringsoperationer för det givna objektet. |
| readerWithView(Klassvy) | Objektläsare | Det är en fabriksmetod som används för att konstruera ObjectReader, vilket tillåter avserialisering av objekt med given JSON View. |
readTree(byte[] innehåll)
| JsonNode ELLER T | ReadTree() och dess varianter används för att avserialisera JSON-innehållet som ett träd uttryckt med en uppsättning JsonNode-instanser. |
| readValue(byte[] src, Class valueType) Liknande metoder
| T ELLER MappingIterator | ReadValue() och dess varianter används för att avserialisera JSON-innehåll
|
| readValues(JsonParser p, Class valueType) Liknande metoder:
| MappingIterator | ReadValues() och dess variationer används för att läsa sekvensen av objekt från parserströmmen. |
| registerModule(Modulmodul) Liknande metoder:
| ObjectMapper | RegisterModule() och dess variationer används för att registrera en modul som har förmågan att utöka funktionaliteten som tillhandahålls av mapparen. |
| registerSubtypes(NamedType... typer) | tomhet | Den används för att registrera den givna klassen som en undertyp. Genom att göra det kan den typnamnbaserade upplösningen länka supertyper till undertyper. |
| setAnnotationIntrospector(AnnotationIntrospector ai) | ObjectMapper | Den används för att ställa in AnnotationIntrospector, som används av mappar-instansen för både serialisering och avserialisering. |
| setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) | ObjectMapper | Den används för att ändra instansen av AnnotationIntrospector som används av den aktuella mapparinstansen för serialisering och avserialisering. |
| setBase64Variant(Base64Variant v) | ObjectMapper | Den används för att konfigurera standard Base64Variant som kommer att användas av byte[] serializers och de-serializers. |
| setConfig(DeserializationConfig config) | ObjectMapper | För att utföra åsidosättningen av det underliggande DeserializationConfig-objektet använder vi den här metoden. |
| setConfig(SerializationConfig config) | ObjectMapper | För att utföra åsidosättningen av det underliggande SerializationConfig-objektet med serialiseringsspecifika konfigurationsinställningar använder vi den här metoden. |
| setDateFormat(DateFormat dateFormat) | ObjectMapper | Det används för att konfigurera standardDateFormat för att använda det vid tidpunkten för serialisering av tidsvärden som strängar eller avserialisering från JSON Strings. |
| setDefaultPrettyPrinter(PrettyPrinter pp) | ObjectMapper | Den används för att ange PrettyPrinter för att använda den när 'default pretty-printing' är aktiverat. |
| setDefaultTyping(TypeResolverBuilder-typ) | ObjectMapper | Den används för att möjliggöra automatisk inkludering av typinformation. |
| setHandlerInstantiator(HandlerInstantiator hej) | Objekt | Den används för att konfigurera HandlerInstantiator att använda för att skapa instanser av hanterare. |
| setFilterProvider(FilterProvider filterProvider) | ObjectMapper | Den används för att konfigurera den aktuella mapparen för att använda specificerad FilterProvider för att mappa filter-ID:n till faktiska filterinstanser. |
| setInjectableValues(InjectableValues injectableValues) | ObjectMapper | Den används för att konfigurera InjectableValues som används för att hitta värden att injicera. |
| setLocale(Local l) | ObjectMapper | Den används för att åsidosätta standardlokalen som ska användas för formatering. |
| setMixInResolver(ClassIntrospector.MixInResolver resolve) | ObjectMapper | Vi använder den här metoden för att specificera den givna resolvern för att lokalisera inblandningsklasser som ska användas, och åsidosätter direkt tillagda mappningar. |
| setMixInAnnotations(Map | tomhet | Det är en avskriven metod för att definiera inblandningskommentarer. |
| setNodeFactory(JsonNodeFactory f) | ObjectMapper | Den används för att specificera JsonNodeFactory som ska användas för att konstruera trädnoder på rotnivå. |
| setMixIns(Map | ObjectMapper | Den används för att definiera de inblandningskommentarer som ska användas för att utöka kommentarer som bearbetningsbara klasser har. |
| setPropertyInclusion(JsonInclude.Value incl) | ObjectMapper | Den används för att ställa in standardinkluderingsstrategin för POJO-egenskapen för serialisering. |
| setPropertyNameStrategy(PropertyNamingStrategy s) | ObjectMapper | Den används för att ställa in den anpassade egendomsnamnstrategin som ska användas. |
| setSerializerFactory(SerializerFactory f) | ObjectMapper | Den används för att ställa in den specifika SerializerFactory som ska användas för att konstruera (bönor) serializers. |
| setSerializerProvider(DefaultSerializerProvider p) | ObjectMapper | Den används för att ställa in 'blueprint' SerializerProvider-instansen för att använda den som bas till faktiska leverantörsinstanser att använda för att hantera cachning av JsonSerializer-instanser. |
| setSubtypeResolver(SubtypeResolver str) | ObjectMapper | Den används för att ställa in den anpassade subtypupplösaren som ska användas. |
| setTimeZone(TimeZone tz) | ObjectMapper | Den används för att åsidosätta standardtidszonen som ska användas för formatering. |
| setTypeFactory(TypeFactory f) | ObjectMapper | Den används för att åsidosätta TypeFactory-instansen, som används av den aktuella mappen. |
setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility synlighet)
| ObjectMapper | SetVisibility() och dess variant används för att ställa in den för närvarande konfigurerade VisibilityChecker. Den returnerade ObjectMapper-instansen används för att kontrollera om det givna egenskapselementet kan upptäckas automatiskt eller inte. |
| treeAsTokens(TreeNode n) | JsonParser | Den används för att konstruera en JsonParser ur JSON-trädrepresentation. |
| treeToValue(TreeNode n, Class valueType) | T | Den används för att binda den data som ett givet JSON-träd innehåller till en specifik värdetyp. |
| version() | Version | Den används för att hämta versionsinformationen lagrad i och läsas från burken som innehåller denna klass. |
författare()
| ObjectWriter | Write() och dess varianter används för att konstruera ObjectWriter med standardinställningar, givet Base64-kodningsvariant för Base64-kodad binär data, teckenutgående detaljer för utdata, standardattribut, DateFormat, filterleverantör, schemaobjekt till JsonGenerator som används för att skriva innehåll, snygg skrivare för indrag, eller funktion aktiverad. |
| writerFor(Class rootType) - | ObjectWriter | Den används för att konstruera ObjectWriter för att serialisera objekten med en angiven rottyp istället för den faktiska runtime-typen av värde. |
| writerFor(JavaType rootType) | ObjectWriter | Den används för att konstruera ObjectWriter för att serialisera objekten med en angiven rottyp istället för den faktiska runtime-typen av värde. |
| writerFor(TypeReference rootType) | ObjectWriter | Den används för att konstruera ObjectWriter för att serialisera objekten med en angiven rottyp istället för den faktiska runtime-typen av värde. |
| writerWithDefaultPrettyPrinter() | ObjectWriter | Det är en fabriksmetod som används för att konstruera ObjectWriter för att serialisera objekten med den ganska standardskrivaren för indrag. |
writerWithType(Class rootType)
| ObjectWriter | Dessa metoder skrivs av och istället för dem använder vi metoden writerFor(TypeReference). |
| writerWithView(Class serializationView) | ObjectWriter | Det är en fabriksmetod som används för att konstruera ObjectWriter för att serialisera objekt med angiven JSON View. |
| writeTree(JsonGenerator jgen, JsonNode rootNode) | tomhet | Den används för att serialisera det medföljande JSON-trädet genom att använda den givna JsonGenerator. |
| writeValue(File resultFile, Object value) | tomhet | Det används för att serialisera Java-värde som JSON-utdata och skriva det till det givna fil. |
| writeValue(JsonGenerator g, Objektvärde). | tomhet | Den används för att serialisera Java-värden som JSON-utdata genom att använda den givna JsonGenerator. |
| writeValue(OutputStream out, Object value) | tomhet | Den används för att serialisera Java-värde som JSON-utdata genom att använda den givna OutputStream. |
| writeValue(Writer w, Object value) | tomhet | Den används för att serialisera Java-värden som JSON-utdata genom att använda den givna Författare. |
| writeValueAsBytes(Objektvärde) | byte[] | Den används för att serialisera Java-värden som en byte-array. |
| writeValueAsString(Objektvärde) | Sträng | Den används för att serialisera Java-värden som en sträng. |
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+ ' ]'; } } Produktion: