2015-07-02 5 views
0

У меня есть требование установить дату создания и созданного пользователя (то же самое для обновления).java reflection MethodUtils

В моей сущности менеджер пользовательского кода, я хотел бы получить доступ к дереву объекта

class Person { 

private Contact personContact; 
private Phone personPhone; 
private List<Address> personAddressList; 
} 

И каждый класс имеют те же атрибуты, как createDate, CreateUser, updateDate, updateUser

Я хочу recursivly проверить все объекты которые не являются нулевыми и устанавливают информацию о создании или обновлении.

Я пытался сделать с помощью

MethodUtils.invokeMethod(request, "setCreateTs", DateUtils.currentJavaTime()); 

Это установит только объект человека, как я должен делать для другого дерева объектов, как контакт или по телефону, если они не равны нулю.

+0

Вы должны добавить логику, чтобы пройти свой график объекта к соответствующему которые вы намереваетесь вызывать через java-отражение. – Chris

ответ

0

Вы должны инициализировать все с помощью методов конструктора, геттера и сеттера. Вот пример.

public class Person { 

private Contact personContact; 
private Phone personPhone; 
private List<Address> personAddressList; 

public Person(Contact personContact, Phone personPhone, List<Address> personAddressList) 
{ 
if(personContact == null) 
    throw new IllegalArgumentException("Contact null!"); 
if(personPhone == null) 
    throw new IllegalArgumentException("Person Phone null!"); 
if(personAddressList.size() == 0 || personAddressList.isEmpty() || personAddressList == null) 
    throw new IllegalArgumentException("Person Address List null or empty"); 
this.personContact = personContact; 
this.personPhone = personPhone; 
this.personAddressList = personAddressList; 
} 
public Contact getContact() 
{ 
return personContact; 
} 
public Phone getPhone() 
{ 
return personPhone; 
} 
public List<Address> getPersonAddressList() 
{ 
if(personAddressList.size() == 0 || personAddressList.isEmpty() || personAddressList == null) 
return new ArrayList<Address>(); //EMPTY LIST 
return personAddressList; 
} 
public void setContact(Contact cont) 
{ 
this.personContact = cont; 
} 
public void setPhone(Phone phone) 
{ 
this.personPhone = phone; 
} 
public void setPersonAddressList(List<Address> list) 
{ 
this.personAddressList = list; 
} 
} 

Создать объект Объект с конструктором, похожим на этот.

Person person = new Person(contact, phone, list); 

И чем вы можете получить все, что вы хотите с помощью методов геттерных, если вы создаете объект с конструктором вы не можете писать сеттер методы