如何解决"静态方法___应该以静态方式访问"警告

Dav*_*idC 1 java static warnings class

我正在阅读Just Java 2这本书,但显然缺少一些基本的东西.这是两个独立的项目.我已经为第二个生成了JAR并将其添加到第一个构建路径中.打印正确的区域但编译器会生成这些警告.这些如何解决?

// -----------------------------------------------------------
// Testing.java
// -----------------------------------------------------------
public class Testing {
    public static void main(String[] args) {
        RectangleDFC r = new RectangleDFC(3, 4);
        System.out.println(r.Area());
            // WARNING: The static method Area() from the type RectangleDFC
            //          should be accessed in a static way
        r.SetSides (10, 10);
            // WARNING: The static method SetSides(int, int) from the type
            //          RectangleDFC should be accessed in a static way
        System.out.println(r.Area());
            // WARNING: The static method Area() from the type RectangleDFC
            //          should be accessed in a static way
    }
}
// -----------------------------------------------------------
// RectangleDFC.java
// -----------------------------------------------------------
public class RectangleDFC {
    int side1;
    int side2;
    RectangleDFC(int s1, int s2) {
        SetSides(s1, s2);
    }
    public void SetSides(int s1, int s2) {
        side1 = s1;
        side2 = s2;
    }
    public int Area() {
        return side1 * side2;
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 13

首先; Java中的方法应该是lowerCamelCase(),而不是UpperCamelCase().类名应该是UpperCamelCase().

第二;

int side1;
int side2;
Run Code Online (Sandbox Code Playgroud)

应该

private int side1;
private int side2;
Run Code Online (Sandbox Code Playgroud)

并且最好(如果你不修改它们)

private final int side1;
private final int side2;
Run Code Online (Sandbox Code Playgroud)

你应该只设置side1side2构造函数,而不是制定者内部.

也就是说,我不认为您正在执行您发布的代码,没有理由应该使用您发布的代码发出这些错误,您可能使用area()声明方法的旧代码链接到.jar文件static.

这本书在互联网时代已经相当陈旧,有更好的初学者书籍更好地涵盖了"现代"Java.例如,如果您使用的图书正在使用Enumeration,Vector或者Hashtable将其放入垃圾箱并获得较新的图书.

  • "Effective Java"不适合初学者.试试"Thinking in Java".我相信有一个问题...... (2认同)