Клас ObjectMapper в Джаксън
ObjectMapper е един от най-важните налични класове в Джаксън библиотека. Използва се за четене и запис на JSON данни. Той отговаря за четенето на данни от или към POJO файл и към и от JSON модел на дърво.
Има следните характеристики на класа ObjectMapper:
- Той поддържа разширени концепции като Полиморфизъм и Разпознаване на обекти.
- Той е много персонализиран за работа с различни стилове JSON съдържание.
- Работи като фабрика за аванс ObjectReader и ObjectWriter класове.
Класът ObjectMapper се декларира по следния начин:
public class ObjectMapper extends ObjectCodec implements Versioned, Serializable
Вложени класове
Следващата таблица дефинира класовете, които разширяват класа ObjectMapper или, може да се каже, вложените класове на класа ObjectMapper.
| Клас | Описание |
|---|---|
| DefaultTypeResolverBuilder | Това е персонализирано TypeResolverBuilder клас, който се използва за получаване на създателите на преобразуватели на типове, с които можем да използваме „въвеждане по подразбиране“. |
| Въвеждане по подразбиране | За да се определи вида на типовете, се използват изброявания с метода enableDefaultTyping(). |
Сега нека разберем полетата, конструкторите и методите на класа ObjectMapper:
Полета на клас ObjectMapper
protected DefaultDeserializationContext _deserializationContext
Това е контекстен обект на план, който се съхранява за разрешаване на потребителски подкласове.
protected DeserializationConfig _deserializationConfig
Това е конфигурационен обект, който се използва за дефиниране на основните глобални настройки за процеса на десериализация.
защитен JsonFactory jsonFactory
За да се създаде екземпляр на JsonParser и JsonGenerator, се използва JsonFactory.
защитени InjectableValues _injectableValues
Това е доставчик, който се използва за инжектиране на стойностите в десериализирани POJO.
защитени ConfigOverrides _propertyOverrides
Използва се за достъп до текущо активните замени на конфигурацията за тип.
защитен SimpleMixInResolver _mixIns
Това е картографиране, което се използва за определяне на начин за прилагане на анотации за смесване. Картирането се извършва по следния начин:
Ключ: Въведете, за да получите допълнителни пояснения.
Стойност: Тип, който има анотации за „смесване“
защитен Задайте _registeredModuleTypes
Това е набор, който дефинира набора от типове модули, които са регистрирани.
защитен SerializationConfig _serializationConfig
Това също е конфигурационен обект, който се използва за дефиниране на основните глобални настройки за процеса на сериализация.
защитена ConcurrentHashMap
Това е карта, която се използва за проследяване на де-сериализаторите на ниво root. Това е карта на основно ниво.
защитен SerializerFactory _serializerFactory
Това е фабрика, която се използва за конструиране на сериализаторите.
защитен SubtypeResolver _subtypeResolver
Използва се за регистриране на подтипове и за решаването им за супер/подтипове, ако е необходимо.
защитена TypeFactory _typeFactory
Това е фабрика, която се използва за създаване на копия на JavaType. Те са необходими, за да се позволи на модулите да добавят повече обработка на персонализирани типове.
protected DefaultSerializerProvider _serializerProvider
Това е обект, който отговаря за управлението на достъпа до сериализаторите, използвани за сериализиране.
защитени статични BaseSettings DEFAULT_BASE
Основните настройки включват настройки по подразбиране, използвани за всички екземпляри на ObjectMapper.
Конструктори на класа ObjectMapper
Има следните конструктори на класа ObjectMapper:
| Конструктор | Описание |
|---|---|
| ObjectMapper() | Това е конструктор по подразбиране, използван за конструиране на екземпляр, който използва default JsonFactory, SerializerProvider, и BeanSerializerFactory. |
| ObjectMapper (JsonFactory фабрика) | Използва се за конструиране на екземпляр, който използва дадения JsonFactory. Дадената JsonFactory се използва за конструиране JsonParsers и/или JsonGenerators. |
| ObjectMapper (фабрика JsonFactory, SerializerProvider доставчик1, DeserializerProvider доставчик2) | Използва се за конструиране на екземпляр, който използва даденото JsonFactory, SerializerProvider, и DeserializerProvider. Дадената JsonFactory се използва за конструиране JsonParsers и/или JsonGenerators. |
| защитен ObjectMapper (ObjectMapper картограф) | Това е копиращ конструктор за поддръжка на copy(). |
Методи на клас ObjectMapper
Класът ObjectMapper дефинира следните методи:
| Метод | Тип връщане | Описание |
|---|---|---|
| _checkInvalidCopy(клас exp) | невалиден | Използва се за проверка на невалидно копие. |
| _configAndWriteValue(JsonGenerator g, стойност на обект) | невалиден | Използва се за конфигуриране на генератора, когато е необходимо и след това за изпълнение на функцията за запис. |
| _convert(Object fromValue, JavaType toValueType) | Обект | Използва се за получаване на действителното изпълнение на преобразуването. Тук методите за четене и запис не се използват за кода. |
| _initForReading(JsonParser p) | JsonToken | Използва се, за да се гарантира дали дадения анализатор е готов за четене на съдържание за обвързване на данни или не. |
| _findRootDeserializer(DeserializationContext ctxt, JavaType valueType) | JsonDeserializer | За предадената стойност на основно ниво, ако искаме да намерим десериализатора, използваме този метод. |
| _newReader(конфигурация на DeserializationConfig) Подобен метод:
| ObjectReader | Това е фабричен метод, т.е. използва се за получаване на екземплярите на ObjectReader от правилния подтип. За да се използва този метод, е необходимо подкласовете да се заменят. |
| _newWriter(Конфигурация на SerializationConfig) Подобни методи:
| ObjectWriter | Това е фабричен метод, т.е. използва се за получаване на екземплярите на ObjectWriter от правилния подтип. За да се използва този метод, е необходимо подкласовете да се заменят. |
| _readValue(DeserializationConfig cfg, JsonParser p, JavaType valueType) | Обект | Използва се за получаване на обект, който дефинира четене на стойност и операция за свързване. |
| _serializerProvider(SerializationConfig конфигурация) | DefaultSerializerProvider | Това е заместващ помощен метод, който се използва за конструиране на SerializerProvider. |
| acceptJsonFormatVisitor(тип клас, JsonFormatVisitorWrapper посетител) Подобен метод:
| невалиден невалиден | Ако искаме да посетим йерархията на определен тип с посочения посетител, използваме този метод. |
| addHandler(DeserializationProblemHandler h) | ObjectMapper | За да се справим с определени проблеми по време на десериализацията, ние използваме определен DeserializationProblemHandler, а за да добавим манипулатора, използваме този метод. |
| addMixIn(целеви клас, клас mixinSource) | ObjectMapper | За да използваме смесена анотация за определен допълващ клас или интерфейс, ние използваме този метод, за да го добавим. |
| canDeserialize (тип JavaType) | Булева стойност | Използва се за проверка дали картографът може да десериализира обект от определен тип или не. |
| canDeserialize(тип JavaType, AtomicReference причина) | Булева стойност | Подобен е на предишния метод. Единствената разлика е, че може да върне хвърляемото, което е било хвърлено по време на конструирането на сериализатора. Хвърляемият може да се използва, за да разберете действителния проблем. |
| canSerialize (тип клас) | Булева стойност | Използва се за проверка дали картографът може да сериализира обект от определен тип или не. |
| canSerialize(тип клас, AtomicReference причина) | Булева стойност | Подобен е на предишния метод. Единствената разлика е, че може да върне хвърляемото, което е било хвърлено по време на конструирането на сериализатора. Хвърляемият може да се използва, за да разберете действителния проблем. |
| clearProblemHandlers() | ObjectMapper | Това е един от методите, който се използва за премахване на всички случаи на DeserializationProblemHandlers от картографа, които са регистрирани. |
| configure(DeserializationFeature f, булево състояние) подобни методи:
| ObjectMapper | Използва се за промяна на състоянието на функция за включване/изключване на десериализация, Json Generator, JsonParser, Mapper или Serialization за съпоставителя на обекти, екземпляри на генератор, екземпляри на анализатор, екземпляр на съпоставител или съпоставител на обекти. |
| constructType(Тип t) | JavaType | Ако искаме да конструираме JavaType от даден тип без изричен контекст, използваме този метод. |
| convertValue(Object fromValue, Class toValueType) Подобни методи:
| T | Ако искаме да извършим преобразуване в две стъпки на дадена стойност в екземпляр от даден тип стойност, използваме метода converValue(). |
| createArrayNode() | ArrayNode | Използва се за създаване на ArrayNode. |
| defaultClassIntrospector() | ClassIntrospector | Ако искаме да използваме ClassIntrospector по подразбиране, използваме този помощен метод Overridable за конструирането му. |
| деактивиране (функция DeserializationFeature) Подобни методи:
| ObjectMapper | Използва се за деактивиране на даден DeserializationConfig, JsonGenerator.Features за екземпляри на анализатор, JsonParser.Features за екземпляри на анализатор на картографа на обекти. |
| disableDefaultTyping() | ObjectMapper | Много пъти трябва да деактивираме автоматичното включване на информация за типа и за тази цел използваме този метод. |
активиране (функция DeserializationFeature)
| ObjectMapper | Използва се за активиране на дадения DeserializationConfig, JsonGenerator.Features за екземпляри на анализатор, JsonParser.Features за екземпляри на анализатор на обектния картограф. |
| enableDefaultTyping() Подобни методи:
| ObjectMapper | За да използваме автоматично включване на информация за типове за десериализация на полиморфни типове, ние използваме този метод, за да го активираме. |
| findAndRegisterModules() | ObjectMapper | Той е подобен на метода mapper.registerModules(mapper.findModules()). |
| findModules() Подобни методи:
| списък | Използва се за намиране на наличните методи. Методът използва възможността JDK ServiceLoader с осигурен от модул SPI. |
| getDateFormat() | Формат на датата | Използва се за получаване на формата на датата. |
| getDeserializationConfig() | DeserializationConfig | Използва се за получаване на споделения обект DeserializationConfig по подразбиране. Върнатият обект дефинира конфигурационните настройки за десериализация. |
| getDeserializationContext() | Контекст на десериализация | Използва се за получаване на текущия контекст на десериализация. |
| getFactory() | JsonFactory | Ако картографът трябва да конструира Json анализатор и генератори, той се нуждае от json factory и за да получи това, ние използваме метода getFactory(). |
| getInjectableValues() | InjectableValues | Използва се за получаване на стойности за инжектиране. |
| getJsonFactory() | JsonFactory | Това е остарял метод за получаване на Json фабриката. |
| getNodeFactory() | JsonNodeFactory | Използва се за получаване на JsonNodeFactory, който се използва от картографа по време на директно конструиране на коренни екземпляри на JsonNode за дървета. |
| getPropertyNamingStrategy() | PropertyNamingStrategy | Както подсказва името, той се използва за стратегията за именуване на имота. |
| getSerializationConfig() | SerializationConfig | Използва се за получаване на споделения обект SerializationConfig по подразбиране. Върнатият обект дефинира конфигурационните настройки за сериализиране. |
| getSerializerFactory() | SerializerFactory | Използва се за получаване на текущия SerializerFactory. |
| getSerializerProvider() | SerializerProvider | Това е инструмент за достъп за фабриката, който се използва за създаване на екземпляри чрез извикване на DefaultSerializerProvider.createInstance(SerializationConfig, SerializerFactory). |
| getSerializerProviderInstance() | SerializerProvider | Това е инструмент за достъп, който се използва за конструиране и връщане на екземпляр на SerializerProvider, който можем да използваме за достъп до сериализатори. |
| getSubtypeResolver() | SubtypeResolver | Използва се за достъп до използвания преобразувател на подтипове. |
| getTypeFactory() | TypeFactory | Това е инструмент за достъп, който се използва за получаване на екземпляр на текущо конфигурирания TypeFactory. |
| getVisibilityChecker() | VisibilityChecker | Използва се за достъп до текущо конфигурираната проверка на видимостта. |
| isEnabled(DeserializationFeature f) Подобни методи:
| Булева стойност | Методът isEnable() и неговите варианти се използват за проверка дали дадена функция за десериализация, JsonFactory, JsonGenerator, JsonParser, Mapper или Serialization е активирана или не. |
| mixInCount() | вътр | Използва се за получаване на броя на mixIn. |
| читател() Подобни методи:
| ObjectReader | Методът reader() и неговите вариации са фабричните методи, които се използват за конструиране на екземпляр на ObjectReader. Въз основа на изискването можем да предадем варианта на кодиране Base64 за кодирани с Base64 двоични данни, атрибути по подразбиране, активирани функции, инжектируеми стойности, JsonNodeFactory за конструиране на JSON дървета. |
| readerFor (тип клас) | ObjectReader | Това е фабричен метод, който се използва за конструиране на ObjectReader, позволяващ операции за четене или актуализиране за екземпляри от посочения тип. |
| readerFor (тип JavaType) | ObjectReader | Това е фабричен метод, който се използва за конструиране на ObjectReader, позволяващ операции за четене или актуализиране за екземпляри на определен JavaType. |
| readerFor(тип TypeReference) | ObjectReader | Това е фабричен метод, който се използва за конструиране на ObjectReader, позволяващ операции за четене или актуализиране за екземпляри на даден TypeReference. |
| readerForUpdating(Object valueToUpdate) | ObjectReader | Това е фабричен метод, който се използва за конструиране на ObjectReader, позволяващ операции за актуализиране на даден обект. |
| readerWithView (изглед на клас) | ObjectReader | Това е фабричен метод, който се използва за конструиране на ObjectReader, позволяващ десериализация на обекти с даден JSON изглед. |
readTree(байт[] съдържание)
| JsonNode ИЛИ T | ReadTree() и неговите варианти се използват за де-сериализиране на съдържанието на JSON като дърво, изразено с помощта на набор от екземпляри на JsonNode. |
| readValue(byte[] src, Class valueType) Подобни методи
| T ИЛИ MappingIterator | ReadValue() и неговите варианти се използват за де-сериализиране на JSON съдържание
|
| readValues(JsonParser p, Class valueType) Подобни методи:
| MappingIterator | ReadValues() и неговите вариации се използват за четене на последователността от обекти от потока на анализатора. |
| registerModule (Модул модул) Подобни методи:
| ObjectMapper | RegisterModule() и неговите варианти се използват за регистриране на модул, който има способността да разширява функционалността, предоставена от картографа. |
| registerSubtypes(NamedType... типове) | невалиден | Използва се за регистриране на даден клас като подтип. Правейки това, разделителната способност, базирана на име на тип, може да свърже супертипове с подтипове. |
| setAnnotationIntrospector(AnnotationIntrospector ai) | ObjectMapper | Използва се за настройка на AnnotationIntrospector, който се използва от екземпляра на картографа както за сериализиране, така и за десериализация. |
| setAnnotationIntrospectors(AnnotationIntrospector serializerAI, AnnotationIntrospector deserializerAI) | ObjectMapper | Използва се за промяна на екземпляра на AnnotationIntrospector, използван от текущия екземпляр на картографа за сериализация и десериализация. |
| setBase64Variant(Base64Variant v) | ObjectMapper | Използва се за конфигуриране на Base64Variant по подразбиране, който ще се използва от сериализаторите и десериализаторите byte[]. |
| setConfig (DeserializationConfig config) | ObjectMapper | За да извършим замяната на основния обект DeserializationConfig, ние използваме този метод. |
| setConfig (SerializationConfig config) | ObjectMapper | За да извършим замяната на основния обект SerializationConfig, който има специфични за сериализацията конфигурационни настройки, ние използваме този метод. |
| setDateFormat(DateFormat dateFormat) | ObjectMapper | Използва се за конфигуриране на DateFormat по подразбиране, за да го използва по време на сериализиране на времеви стойности като низове или де-сериализиране от JSON низове. |
| setDefaultPrettyPrinter(PrettyPrinter pp) | ObjectMapper | Използва се за указване на PrettyPrinter за използването му, когато е активирано 'default pretty-printing'. |
| setDefaultTyping(TypeResolverBuilder typer) | ObjectMapper | Използва се за разрешаване на автоматично включване на информация за типа. |
| setHandlerInstantiator(HandlerInstantiator здравей) | Обект | Използва се за конфигуриране на HandlerInstantiator за използване за създаване на екземпляри на манипулатори. |
| setFilterProvider(FilterProvider filterProvider) | ObjectMapper | Използва се за конфигуриране на текущия картограф да използва определен FilterProvider за картографиране на идентификатори на филтри към действителни екземпляри на филтри. |
| setInjectableValues(InjectableValues injectableValues) | ObjectMapper | Използва се за конфигуриране на InjectableValues, който се използва за намиране на стойности за инжектиране. |
| setLocale(Local l) | ObjectMapper | Използва се за замяна на локала по подразбиране, който да се използва за форматиране. |
| setMixInResolver(ClassIntrospector.MixInResolver разрешаване) | ObjectMapper | Ние използваме този метод, за да посочим дадения преобразувател, за да намерим смесени класове, които да използваме, заменяйки директно добавените съпоставяния. |
| setMixInAnnotations(Карта | невалиден | Това е амортизиран метод за дефиниране на смесена анотация. |
| setNodeFactory(JsonNodeFactory f) | ObjectMapper | Използва се за указване на JsonNodeFactory за използване за конструиране на дървовидни възли на ниво корен. |
| setMixIns(Карта | ObjectMapper | Използва се за дефиниране на анотациите за смесване, които да се използват за разширяване на анотациите, които обработваемите класове имат. |
| setPropertyInclusion(JsonInclude.Value вкл.) | ObjectMapper | Използва се за задаване на стратегията за включване на свойството POJO по подразбиране за сериализиране. |
| setPropertyNamingStrategy(PropertyNamingStrategy s) | ObjectMapper | Използва се за задаване на използваната стратегия за именуване на персонализирани свойства. |
| setSerializerFactory(SerializerFactory f) | ObjectMapper | Използва се за задаване на конкретната SerializerFactory, която да се използва за конструиране (bean) сериализатори. |
| setSerializerProvider(DefaultSerializerProvider p) | ObjectMapper | Той се използва за задаване на екземпляра на SerializerProvider „план“ за използването му като основа за действителни екземпляри на доставчик, които да се използват за обработка на кеширане на екземпляри на JsonSerializer. |
| setSubtypeResolver(SubtypeResolver str) | ObjectMapper | Използва се за задаване на потребителския преобразувател на подтипове, който да се използва. |
| setTimeZone(TimeZone tz) | ObjectMapper | Използва се за замяна на часовата зона по подразбиране, която да се използва за форматиране. |
| setTypeFactory(TypeFactory f) | ObjectMapper | Използва се за замяна на екземпляра TypeFactory, който се използва от текущия картограф. |
setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility видимост)
| ObjectMapper | SetVisibility() и неговият вариант се използват за задаване на текущо конфигурирания VisibilityChecker. Върнатият екземпляр на ObjectMapper се използва за проверка дали даденият елемент на свойство може да бъде автоматично открит или не. |
| treeAsTokens(TreeNode n) | JsonParser | Използва се за конструиране на JsonParser от JSON дървовидно представяне. |
| treeToValue(TreeNode n, Class valueType) | T | Използва се за обвързване на данните, които даденото JSON дърво съдържа в конкретен тип стойност. |
| версия() | Версия | Използва се за получаване на информацията за версията, съхранена в и за четене от буркана, който съдържа този клас. |
писател()
| ObjectWriter | Write() и неговите вариации се използват за конструиране на ObjectWriter с настройки по подразбиране, даден вариант на кодиране на Base64 за кодирани с Base64 двоични данни, подробности за екраниране на знаци за изход, атрибути по подразбиране, DateFormat, доставчик на филтър, обект на схема към JsonGenerator, използван за писане на съдържание, красив принтер за отстъпи или активирана функция. |
| writerFor (Клас коренен тип) - | ObjectWriter | Използва се за конструиране на ObjectWriter за сериализиране на обектите с помощта на определен основен тип вместо действителния тип стойност на изпълнение. |
| writerFor (JavaType rootType) | ObjectWriter | Използва се за конструиране на ObjectWriter за сериализиране на обектите с помощта на определен основен тип вместо действителния тип стойност на изпълнение. |
| writerFor(TypeReference rootType) | ObjectWriter | Използва се за конструиране на ObjectWriter за сериализиране на обектите с помощта на определен основен тип вместо действителния тип стойност на изпълнение. |
| writerWithDefaultPrettyPrinter() | ObjectWriter | Това е фабричен метод, който се използва за конструиране на ObjectWriter за сериализиране на обектите, използвайки доста принтера по подразбиране за отстъп. |
writerWithType (коренен тип на клас)
| ObjectWriter | Тези методи са амортизирани и вместо тях използваме метода writerFor(TypeReference). |
| writerWithView(Class serializationView) | ObjectWriter | Това е фабричен метод, който се използва за конструиране на ObjectWriter за сериализиране на обекти с помощта на определен JSON изглед. |
| writeTree(JsonGenerator jgen, JsonNode rootNode) | невалиден | Използва се за сериализиране на предоставеното JSON дърво с помощта на дадения JsonGenerator. |
| writeValue(File resultFile, Object value) | невалиден | Използва се за сериализиране на Java стойност като JSON изход и записването й в даденото файл. |
| writeValue(JsonGenerator g, стойност на обект). | невалиден | Използва се за сериализиране на Java стойности като JSON изход чрез използване на даденото JsonGenerator. |
| writeValue(OutputStream out, Object value) | невалиден | Използва се за сериализиране на Java стойност като JSON изход чрез използване на даденото OutputStream. |
| writeValue(Writer w, стойност на обект) | невалиден | Използва се за сериализиране на Java стойности като JSON изход чрез използване на даденото писател. |
| writeValueAsBytes(Стойност на обект) | байт[] | Използва се за сериализиране на стойности на Java като байтов масив. |
| writeValueAsString(Стойност на обект) | низ | Използва се за сериализиране на Java стойности като низ. |
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+ ' ]'; } } Изход: