我正在阅读这本书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;
}
}
答案 0 :(得分:13)
首先关闭; Java中的方法应该是lowerCamelCase()
,而不是UpperCamelCase()
。类名应为UpperCamelCase()
。
第二
int side1;
int side2;
应该是
private int side1;
private int side2;
并且最好(如果你不修改它们)
private final int side1;
private final int side2;
你应该在构造函数中设置side1
和side2
而不是setter。
那就是说,我认为你没有执行你发布的代码,没有理由用你发布的代码发出这些错误,你可能会链接到一个.jar文件,其中有一些旧的代码{ {1}}方法声明为area()
。
这本书在互联网时代已经相当陈旧,有更好的初学者书籍更好地涵盖了“现代”Java。例如,如果您使用的图书正在使用static
,Enumeration
或Vector
将其放入垃圾箱并获得较新的图书。
答案 1 :(得分:4)
显示的代码不会生成警告。也许您更改了代码并忘记在Testing
类的类路径中更新JAR?
是的,你肯定应该遵守模糊棒棒糖所示的命名约定。
答案 2 :(得分:4)
是否还有一些您未在此处显示的区域和SetSides定义为静态方法的代码?如果是这样,并且类路径上的代码比您在此处显示的版本更高,那就是问题所在。正如Peter Kofler提到的那样,您显示的代码不会产生警告。要删除警告,您必须将r.Area()
替换为Rectangle.Area()
,将r.setSides(10, 10)
替换为Rectangle.SetSides(10, 10)
。
这就是说这些方法是静态的没有意义。另外,请参阅模糊棒棒糖对适当Java约定的注释。
答案 3 :(得分:3)
指示时使用类名而不是实例名。