我定期使用 Eclipse 调试器,这一直困扰着我关于 IDE 的问题。步进过滤是一个非常宝贵的工具,这样我就不会进入没有源代码或者我根本不感兴趣的类。但是 Eclipse 在大多数情况下都不能正确处理。特别是,有“过滤简单的getter”和“过滤简单的setter”的选项。
我可能会使用一个 getter,它只是简单地返回成员变量的值。
private String value;
public String getValue()
{
return value;
}
或者可能是一个懒惰地实例化昂贵对象的吸气剂。
private IObjectFactory instance;
public IObjectFactory getInstance()
{
if (instance == null)
instance = ObjectFactory.createFactory();
return instance;
}
我可能会使用一个只设置成员变量值的设置器。
private String value;
public void setValue(String value)
{
this.value = value;
}
我可能想支持流畅的语法。
private String value;
public ObjectFactory setValue(String value)
{
this.value = value;
return this;
}
或者也许做一些验证或事件触发。
private String user;
public void setUser(String user)
{
if (StringUtils.isBlank(user))
throw ExceptionHelper.argumentNull("user");
this.user = user;
}
private String title;
public void setTitle(String title)
{
if (!StringUtils.equals(this.title, title))
{
this.title= title;
onPropertyChanged("title", title);
}
}
对于这些用途中的每一种,使用 eclipse 进入代码会进入这些方法......
Eclipse 将什么视为“简单的 getter”或“简单的 setter”?
过滤器肯定是启用的:
万一这很重要,我使用的是 Eclipse Kepler build 20130614-0229。我正在使用 JRE6 运行 Eclipse 和托管 Java 1.4 Web 应用程序的 Tomcat 7 服务器。尽管我们最终以 1.4 为目标,但它是使用 JDK6 在本地编译的,所以我认为这不是问题。我确实安装并使用了 JRebel,也许类加载器正在干扰确定什么被认为是“简单”的算法?结合启用的“逐步通过过滤器”选项,它可能会逐步执行我的代码。考虑到这一点后,我将进一步进行实验。