2012-03-28 40 views
1

在下面的设计示例中,data由于未被使用而被给出警告。有人可以解释为什么这是警告的东西吗?Eclipse在抽象类中警告“变量未被使用”?

public abstract class Worker { 

    private Object data; 

    public Worker(Object data) { 
     this.data = data; 
    } 

    public abstract Result run(); 

} 

当然,这个数据对象是使用的,只是不在这个抽象类中。我应该怎么做才能让这个错误消失,也就是说它是一个日食设置,还是我只是在做错误的事情。

回答

10

课程的点,是数据对象被使用,只是没有在这个抽象类。

怎么样?它是私人的。除非使用反射,否则子类将无法看到它。

可以使其protected,这样子类可以看到它 - 或者更好(IMO),提供一个受保护的getData()方法。

+0

想知道为什么你建议一个受保护的'getData()'方法会更好? – Jacob 2012-03-28 11:22:28

+0

@Jacob:我将字段视为一个实现细节,不应该在非常例外的情况下非私下暴露。 – 2012-03-28 11:36:06

1

找到答案!因为这些变量被声明为private他们不能被这个类的后代使用。它们需要声明protected

3

该变量对类是私有的,所以实际上不能被任何子类型访问。既然你只是在你的构造函数中分配它,Eclipse会警告你它没有被使用。

如果变量被子类型使用,则开始扩展其可见性或添加getter/setter。如果不使用该类型,则不应将其传入构造函数中。

相关问题