2015-04-17 4 views
1

У меня есть следующий класс:отражение. Как узнать значение поля родного брата?

class CampaignBeanDto { 

    Date startDate; 

    @MyAnnotation 
    Date endDate; 

} 

Мне нужна ссылка на поле endDate

я должен знать, какое значение имеет значение startDate для того же экземпляр

+1

Я бы избегал в зависимости от порядка полей (но я могу ошибаться). Не можете ли вы отсканировать все поля и найти подходящую аннотацию? – Pshemo

+0

Как я могу получить ссылку на экземпляр CampaignBeanDto, если у меня есть только поле? – gstackoverflow

+0

Создайте его с помощью CampaignBeanDto dto = new CampaignBeanDto() 'и используйте' dto' в качестве ссылки (или используете существующий). – dunni

ответ

1

Предполагая, что вы написали @MyAnnotation на вершине endDate я считаю, вы хотите получить поле, которое аннотируется с некоторой аннотацией.

Вы можете добиться этого, что путь:

for(Field f : CampaignBeanDto.class.getFields()) 
{ 
    if(f.getAnnotation(MyAnnotation.class) != null) 
    { 
     //this is the field you are searching 
    } 
} 

Если поле всегда называется endDate, то вы можете просто сделать:

for(Field f : CampaignBeanDto.class.getFields()) 
{ 
    if(f.getName().equals("endDate")) 
    { 
     //this is the field you are searching 
    } 
} 
0

Следующий код будет получить все поля экземпляра при условии , Он будет сканировать аннотации. получит все значения полей, имеющих ваши пользовательские аннотации

Field[] fields = instance.getClass().getDeclaredFields(); 
if(instance.getAnnotation(MyAnnotation.class) != null){ 
     for (Field field : fields) { 
      boolean access = field.isAccessible(); 
      field.setAccessible(true); 

      //getting value 
      System.out.println(field.get(instance)); 

      field.setAccessible(access); 

     } 
} 
+0

Я получил от вас эту часть, поэтому я нажал ваш ответ полезным .. :) вы могли бы отредактировать u знаете –

Смежные вопросы