Java 确定代码中正在访问POJO的哪些字段

Java 确定代码中正在访问POJO的哪些字段,java,junit,pojo,Java,Junit,Pojo,我有一个巨大的(父)POJO,它正在某些组件中使用。POJO既有单独的字段,也有嵌套的POJO。是否可以确定在该组件中访问此POJO中的所有字段/嵌套字段 我在考虑JUnits/aspects,但不确定这两个方面是否有效。我试着通过SF/和谷歌搜索,但找不到任何与此相关的线索 假设以下是一个示例POJO: public class Student { private String name; private Date date; private Subject subject;

我有一个巨大的(父)POJO,它正在某些组件中使用。POJO既有单独的字段,也有嵌套的POJO。是否可以确定在该组件中访问此POJO中的所有字段/嵌套字段

我在考虑JUnits/aspects,但不确定这两个方面是否有效。我试着通过SF/和谷歌搜索,但找不到任何与此相关的线索

假设以下是一个示例POJO:

public class Student {

  private String name;
  private Date date;
  private Subject subject;

  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public Date getDate() {
    return date;
  }
  public void setDate(Date date) {
    this.date = date;
  }
  public Subject getSubject() {
    return subject;
  }
  public void setSubject(Subject subject) {
    this.subject = subject;
  }

}
它有三个字段name、date和subject,并非所有字段都在我的组件中使用。所以我需要确定实际使用的是什么

编辑: 感谢莎伦指出,能手/二传手受到保护。我只是为了提问而动态生成这个类,没有注意到这个问题。现在更正。 类的初始化方式:为了组件的目的,将从Json/XML数据创建对象,并且只调用getter。 至于静态与运行时分析,如果可能的话,我更愿意通过静态代码分析来实现,否则运行时也可以,如果更容易的话。
至于使用Decorator模式,我们是否有任何不需要更改现有代码的方法?这就是为什么我在想JUnits是否可以做到这一点。

首先,看到getter/setter方法受到保护是很奇怪的。在我看来,他们需要公开吗?
不管怎么说,我会利用这个机会。 从链接文章中:

decorator设计模式允许我们动态添加 在不影响行为的情况下将功能和行为添加到对象 同一类中其他现有对象的

因此,我们的学生应该继承目标类。所有方法都可以记录它们的使用情况并调用super来调用目标操作。你没说学生怎么做 已初始化,但无论如何,您都需要修改它以创建
LogUsageStudent

public class LogUsageStudent extends Student {

  protected String getName() {
    // log usage of getName() 
    return super.getName();
  }
  // etc
}

我想他想在应用程序执行之前知道用法你是说静态代码分析?那么为什么建议使用junit或AOP呢?对我来说,这听起来像是运行时用法。请指定是要进行静态代码分析(编译时用法)还是在运行时跟踪用法