საშინაო დავალება შემდეგია:
მოცემულია კლასი Client, რომელსაც აქვს 3 ველი String ტიპისა: firstName,
lastName, email
public class Person {
private String firstName;
private String lastName;
private String email;
// set და get მეთოდები
}
დაწერეთ პროგრამა, რომელიც
1. სტანდარტული შეტანის ნაკადიდან შეიტანს ამ კლასის ობიექტებს შემდეგი
წესით: ეკრანზე გამოდის შეკითხვა: გსურთ შეტანა?
დადებითი პასუხის შემთხვევაში პროგრამა ქმნის Clientტიპის ობიექტს,
Reflection API-ს გამოყენებით იღებს კლასის ველებს სათითაოდ და
გვეკითხება მათ მნიშვნელობებს (მაგ. Input firstName: ) და შეტანის
შემდეგ ასევე Reflection API-თი ახდენს ამ ობიექტის ველებში ინფორმაციის
შეტანას და თავად ობიექტის ჩამატებას წინასწარ შექმნილ ArrayList<Client>
სიაში.
უარყოფითი პასუხის შემთხვევაში პროგრამა ბეჭდავს მიღებულ ArrayList-ს
2. კლას Clientგადაუფარეთ მეთოდი toString() რომელიც ასევე Reflection
API-ს საშუალებით ამოიკითხავს ობიექტის ველებს და დააბრუნებს შემდეგი
ტიპის პასუხს: "Client[ firstName=Mikheil, lastName=Kapanadze,
email=mik...@mikheil.com]" ველების მიმდევრობას მნიშვნელობა არ აქვს
3. განსაზღვრეთ ანოტაცია FieldMetadata რომელიც შეიძლება დაეწეროს კლასის
ველებს. თუკი კლასში გვაქვს შემდეგი აღწერა:
@FieldMetadata(name="First Name", minLength=2)
private String firstName;
ეს ნიშნავს რომ შეტანისას უნდა გვითხრას არა Input firstName: არამედ
Input First Name: და თუკი შეტანილი სტრიქონის სიგრძე 2-ზე ნაკლებია,
გამოიტანოს შეტყობინება შეცდომის შესახებ, მიმდინარე Client ტიპის
ობიექტი არ დაამატოს ArrayList-ში და გადავიდეს შემდეგზე.
ასევე, toString-მა უნდა უნდა დააბრუნოს არა "Client[ firstName=Mikheil,
lastName=Kapanadze, email=mik...@mikheil.com]"
არამედ:
"Client[ First Name=Mikheil, lastName=Kapanadze,
email=mik...@mikheil.com]"
სიგრძეზე კონტროლი არ მოხდეს, თუკი ველს ეწერება ანოტაცია შემდეგნაირად:
@FieldMetadata(name="First Name")
private String firstName;
თუკი ველს უველს ანოტაცია საერთოდ არ უწერია, შედეგი დაემთხვეს შემდეგი
ანოტაციის არსებობას:
@FieldMetadata(name="firstName")
private String firstName;
საშინაო დავალების გამოგზავნის ბოლო ვადაა 2 აპრილის 18:00