Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决;静态方法“应以静态方式访问”;警告_Java_Class_Static_Warnings - Fatal编程技术网

Java 如何解决;静态方法“应以静态方式访问”;警告

Java 如何解决;静态方法“应以静态方式访问”;警告,java,class,static,warnings,Java,Class,Static,Warnings,我正在翻阅这本书,但显然遗漏了一些基本的东西。这是两个独立的项目。我为第二个生成了一个JAR,并将其添加到第一个的构建路径中。将打印正确的区域,但编译器会生成这些警告。如何解决这些问题 // ----------------------------------------------------------- // Testing.java // ----------------------------------------------------------- public class Te

我正在翻阅这本书,但显然遗漏了一些基本的东西。这是两个独立的项目。我为第二个生成了一个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;
    }
}

指示时使用类名而不是实例名。

指示时使用类名而不是实例名。

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

第二

int side1;
int side2;
应该是

private int side1;
private int side2;
最好是(如果您不修改它们)

您应该在构造函数中设置
side1
side2
,而不是setter

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


另外,这本书在互联网时代已经很老了,有很多更好的入门书更好地介绍了“现代”Java。例如,如果您正在使用的书正在使用
枚举
向量
哈希表
,请将其放入垃圾箱,然后获得一本更新的书。

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

第二

int side1;
int side2;
应该是

private int side1;
private int side2;
最好是(如果您不修改它们)

您应该在构造函数中设置
side1
side2
,而不是setter

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


另外,这本书在互联网时代已经很老了,有很多更好的入门书更好地介绍了“现代”Java。例如,如果您正在使用的书籍正在使用
枚举
向量
哈希表
将其放入垃圾箱并获取较新的书籍。

显示的代码不会生成警告。也许您更改了代码,忘记了更新
Testing
类的类路径中的JAR

是的,您肯定应该遵守模糊棒棒糖所示的命名约定。

显示的代码不会生成警告。也许您更改了代码,忘记了更新
Testing
类的类路径中的JAR


是的,您肯定应该遵守fuzzy lollipop所示的命名约定。

这里是否有其他代码没有显示,其中Area和SetSide定义为静态方法?如果是这样,并且类路径上的代码比这里显示的版本高,这就是问题所在。正如Peter Kofler提到的,您正在显示的代码不会生成该警告。要消除警告,您必须将
r.Area()
替换为
Rectangle.Area()
,将
r.setside(10,10)
替换为
Rectangle.setside(10,10)


尽管如此,这些方法是静态的是没有意义的。另外,请参阅fuzzy lollipop的注释以了解正确的Java约定。

这里是否有一些其他代码没有显示,这些代码将Area和SetSide定义为静态方法?如果是这样,并且类路径上的代码比这里显示的版本高,这就是问题所在。正如Peter Kofler提到的,您正在显示的代码不会生成该警告。要消除警告,您必须将
r.Area()
替换为
Rectangle.Area()
,将
r.setside(10,10)
替换为
Rectangle.setside(10,10)


尽管如此,这些方法是静态的是没有意义的。另外,请参阅fuzzy lollipop的评论,了解适当的Java约定。

我也会这么说,只是
Area()
方法在他的代码示例中不是静态的。。。可能样本是错误的?@fuzzy lollipop,列出的代码是否产生了所指示的警告?不,它不会,简单的眼球分析应该会揭示这一点。@fuzzy,准确地说,你甚至在回答中注意到了自己,所以所包含的源代码不是给出警告的地方引用的源代码。警告的正确操作如我所述。不是针对发布的代码,这是我们必须继续的,问题是.jar没有运行发布的代码,这似乎是海报想要执行的代码。我想说同样的事情,除了
区域()
方法在他的代码示例中不是静态的。。。可能样本是错误的?@fuzzy lollipop,列出的代码是否产生了所指示的警告?不,它不会,简单的眼球分析应该会揭示这一点。@fuzzy,准确地说,你甚至在回答中注意到了自己,所以所包含的源代码不是给出警告的地方引用的源代码。警告的正确操作正如我所说的。不是针对发布的代码,这是我们必须继续做的,问题是.jar没有运行发布的代码,这似乎是海报想要执行的代码。+1用于破坏这本书。我的同事喜欢“高效Java”。“高效Java”不适合初学者。试试“用Java思考”。我肯定有一个问题…“把它扔进垃圾桶,买一本更新的书。”