Java 确定代码中正在访问POJO的哪些字段
我有一个巨大的(父)POJO,它正在某些组件中使用。POJO既有单独的字段,也有嵌套的POJO。是否可以确定在该组件中访问此POJO中的所有字段/嵌套字段 我在考虑JUnits/aspects,但不确定这两个方面是否有效。我试着通过SF/和谷歌搜索,但找不到任何与此相关的线索 假设以下是一个示例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;
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呢?对我来说,这听起来像是运行时用法。请指定是要进行静态代码分析(编译时用法)还是在运行时跟踪用法