Eclipse Java清理功能

时间:2016-09-18 00:09:25

标签: java eclipse

Eclipse有一个名为的自动Java清理:

  

更改对静态成员的间接访问以直接访问(通过子类型访问)"`

这是什么意思?

编辑:请注意,还有另一个

  

使用声明类型

更改对静态成员的非静态访问

所以我的询问主题必须与此不同。

这些在Windows > Preferences > Java > CodeStyle > Clean-Up中,几乎无法找到,因为它位于Windows下。

3 个答案:

答案 0 :(得分:1)

这解决了在一个类中有静态方法的情况,但是你使用子类的名称来调用它。因此,静态方法可能是

SuperClass.someStaticMethod();

但您已将其引用为

SubClass.someStaticMethod();

请注意,它与另一个清理类似,您可以在其中调用静态方法,例如myObject.someStaticMethod();来代替TheClass.someStaticMethod();。括号中的部分表示它是“通过子类型访问”清理。

答案 1 :(得分:1)

假设您有班级

class A {

    static int i;
}

然后

  

更改对静态成员的间接访问以直接访问(通过子类型访问)

指的是你有另一个类

的情况
class B extends A {}

并写

B.i = 2;

在这种情况下,清理会将其更改为

A.i = 2;

因为(正如我在评论中写的那样),静态成员将通过其声明的类(A)进行访问,而不是通过继承它的类(B )。

  

使用声明类型

更改对静态成员的非静态访问

指的是你写

的情况
A a = new A();
a.i = 2;

在这种情况下,清理会将其更改为

A.i = 2;

因为静态成员将通过类(A)而不是通过类的实例(a)来访问。

答案 2 :(得分:0)

您通过对象而不是定义它的类调用静态变量/方法。当它表示'通过声明类型'时,它意味着你将变量/方法声明为类变量/方法,你应该用它来调用它。