2015-10-08 4 views
0

Я имею в супер классе много много полей, поэтому я хочу использовать отражение для того, чтобы инициализировать вспомогательный объект из суперКак выполнить Java-код из String?

в классе к югу у меня есть

public class Bot_PageTrack extends PageTrack { 
    public Bot_PageTrack(PageTrack pt) { 
     for (Field field : PageTrack.class.getDeclaredFields()) { 
      String code = "this." + field + " = " + "pt." + field; 
      //HOW DO I EXECUTE THIS CODE?????????? 
     } 
    } 
} 
+1

Почему вы пытаетесь это сделать? Не лучше ли было бы просто инициализировать поля в конструкторе 'Bot_PageTrack'? –

ответ

0

Ну, вы это сказали: Используйте отражение :

class Bot_PageTrack extends PageTrack { 
    public Bot_PageTrack(PageTrack pt) { 
     for (Field field : PageTrack.class.getDeclaredFields()) { 
      // this.field = pt.field 
      try { 
       field.set(this, field.get(pt)); 
      } catch (IllegalAccessException e) { 
       throw new IllegalAccessError(e.getMessage()); 
      } 
     } 
    } 
} 

конечно, это имеет смысл только для копирования из другогоPageTrack объекта, а не свой собственный суперкласса, потому что у вас уже есть те Доступны ле.