שימוש בהערת @Accessors של לומבוק

1. סקירה כללית

זה די אופייני שיש לקבל ו מַעֲרֶכֶת שיטות באובייקטים של התחום שלנו, אך ישנן דרכים אחרות בהן אנו עשויים למצוא אקספרסיביות יותר.

במדריך זה נלמד על פרויקטים של לומבוק @Accessors ביאור ותמיכתו בגורמים שוטפים, משורשרים ומותאמים אישית.

לפני שתמשיך, עם זאת, IDE שלנו יצטרך להתקין את Lombok.

2. אביזרים סטנדרטיים

לפני שאנחנו מסתכלים על @Accessors ביאור, בואו נסקור כיצד לומבוק מתייחס ל @ גטר ו @ סטר הערות כברירת מחדל.

ראשית, בואו ניצור את הכיתה שלנו:

@Getter @Setter מחלקה ציבורית StandardAccount {שם מחרוזת פרטי; מאזן פרטי של BigDecimal; }

ועכשיו בואו ניצור מקרה מבחן. אנו יכולים לראות במבחן שלנו שלומבוק הוסיף שיטות טיפוסיות וקובעות:

@Test הציבור בטל givenStandardAccount_thenUseStandardAccessors () {חשבון StandardAccount = StandardAccount חדש (); account.setName ("אביזרים בסיסיים"); account.setBalance (BigDecimal.TEN); assertEquals ("אביזרים בסיסיים", account.getName ()); assertEquals (BigDecimal.TEN, account.getBalance ()); }

נראה כיצד מקרה הבדיקה הזה משתנה כשאנחנו מסתכלים @ גישההאפשרויות.

3. אביזרים שוטפים

נתחיל עם שׁוֹטֵף אוֹפְּצִיָה:

@Accessors (שוטף = נכון)

ה שׁוֹטֵף אפשרות נותנת לנו נגישים שאין להם לקבל אוֹ מַעֲרֶכֶת קידומת.

אנו נסתכל על ה- שַׁרשֶׁרֶת אפשרות ברגע, אך מכיוון שהיא מופעלת כברירת מחדל, בוא נשבית אותה במפורש לעת עתה:

@Accessors (שוטף = true, chain = false) @Getter @Setter מחלקה ציבורית FluentAccount {שם מחרוזת פרטי; מאזן פרטי של BigDecimal; }

כעת, המבחן שלנו עדיין מתנהג באופן זהה, אך שינינו את הדרך בה אנו ניגשים למצב ומוטציה:

@Test ציבורי בטל givenFluentAccount_thenUseFluentAccessors () {חשבון FluentAccount = FluentAccount חדש (); account.name ("חשבון שוטף"); account.balance (BigDecimal.TEN); assertEquals ("חשבון שוטף", account.name ()); assertEquals (BigDecimal.TEN, account.balance ()); }

שימו לב איך קבל וקבע קידומות נעלמו.

4. אביזרים משורשרים

עכשיו בואו נסתכל על ה- שַׁרשֶׁרֶת אוֹפְּצִיָה:

@Accessors (שרשרת = נכון)

ה שַׁרשֶׁרֶת אפשרות נותנת לנו מגדירים שחוזרים זֶה. שים לב שוב שהוא ברירת המחדל ל נָכוֹן, אך נגדיר זאת במפורש לשם הבהרה.

המשמעות היא שנוכל לשרשר מספר רב מַעֲרֶכֶת פעולות יחד בהצהרה אחת.

בואו ונבנה על שלנו שׁוֹטֵף אביזרים ולשנות את שַׁרשֶׁרֶת אפשרות ל נָכוֹן:

@Accessors (fluent = true, chain = true) @Getter @Setter בכיתה ציבורית ChainedFluentAccount {שם מחרוזת פרטי; מאזן פרטי של BigDecimal; } 

אנו מקבלים את אותו האפקט אם נשאיר בחוץ שַׁרשֶׁרֶת ופשוט ציין:

@Accessors (שוטף = נכון)

ועכשיו בואו נראה איך זה משפיע על מקרה הבדיקה שלנו:

@Test הציבור בטל givenChainedFluentAccount_thenUseChainedFluentAccessors () {ChainedFluentAccount חשבון = חדש ChainedFluentAccount () .name ("חשבון שוטף"). איזון (BigDecimal.TEN); assertEquals ("חשבון שוטף", account.name ()); assertEquals (BigDecimal.TEN, account.balance ()); }

שימו לב איך חָדָשׁ ההצהרה הופכת ארוכה יותר עם קובעים משורשרים יחד, מסירים צלחת דוד.

כך, כמובן, של לומבוק @בּוֹנֶה עושה שימוש ב שַׁרשֶׁרֶתעורך שׁוֹטֵף אביזרים.

5. אביזרי קידומת

ולבסוף, לפעמים בשדות שלנו עשויה להיות קונבנציית שמות שונה מזו שהיינו רוצים לחשוף באמצעות גטרים וקובעים.

בואו ניקח בחשבון את המחלקה הבאה המשתמשת בסימון הונגרי לשדותיה:

מחלקה ציבורית PrefixedAccount {private String sName; פרטי BigDecimal bdBalance; }

אם היינו חושפים זאת עם @ גטר ו @ סטרהיינו מקבלים שיטות כמו getSName, וזה לא ממש קריא.

ה קידומת אפשרות מאפשרת לנו לומר ל- Lombok מאילו קידומות להתעלם:

@Accessors (קידומת = {"s", "bd"}) @Getter @Setter מחלקה ציבורית PrefixedAccount {שם פרטי מחרוזת; פרטי BigDecimal bdBalance; }

אז בואו נראה איך זה משפיע על מקרה הבדיקה שלנו:

@Test הציבור בטל givenPrefixedAccount_thenRemovePrefixFromAccessors () {חשבון prefixedAccount = חשבון prefixedAccount חדש (); account.setName ("שדות מוקדמים"); account.setBalance (BigDecimal.TEN); assertEquals ("שדות קבועות מראש", account.getName ()); assertEquals (BigDecimal.TEN, account.getBalance ()); }

שימו לב כיצד הגישות עבור שלנו שם שדה (setName,getName) השמיט את המוביל ס ואת accessors עבור bdBalance להשמיט את המוביל bd.

עם זאת, לומבוק חל על קידומות רק כשקידומת אחורה משהו אחר מלבד אות קטנה.

זה מוודא שאם יש לנו שדה שאינו משתמש בסימון הונגרי, כגון מדינה, אבל מתחיל באחת מהקידומות שלנו, ס, בסופו של דבר אנחנו לא getTate ()!

לבסוף, נניח שאנחנו רוצים להשתמש בקו תחתון בסימון שלנו, אלא גם רוצים לעקוב אחריה באות קטנה.

בואו נוסיף שדה הערות עם קידומת s_:

@Accessors (קידומת = "s_") פרטי מחרוזת s_ הערות;

בעקבות כלל האותיות הקטנות נקבל שיטות כמו getS_Notes (), כך Lombok מחיל גם קידומות כאשר קידומת עצמה מסתיימת במשהו שאינו אות.

6. מאפייני תצורה

אנו יכולים להגדיר ברירת מחדל לפרויקט או לספרייה עבור שילוב ההגדרות המועדף עלינו על ידי הוספת מאפייני תצורה ל- lombok.config קוֹבֶץ:

lombok.accessors.chain = נכון lombok.accessors.fluent = נכון

לקבלת פרטים נוספים, עיין במדריך תצורת התכונות של Lombok.

7. מסקנה

במאמר זה השתמשנו ב- שוטף, שרשרת, ו קידומת אפשרויות של לומבוק @Accessors הערה בשילובים שונים כדי לראות כיצד היא השפיעה על הקוד שנוצר.

למידע נוסף, הקפד להעיף מבט במדריך התכונות JavaDoc ו- Experimental של Lombok Accessors.

כרגיל, המקור למאמר זה זמין באתר GitHub.