我正在制作一个基本代码如下的程序:
public class StatisticalList extends ArrayList {
public double getMinimumValue() {...} public double getMaximumValue() {...} public double range(){ double range = StatisticalList.getMaximumValue() - StatisticalList.getMinimumValue(); return range; }
在这里我实现了两个方法,getMinimumValue和getMaximumValue。接下来我想实现一个getRange方法。似乎很容易不再进行计算,只需调用get__Value()方法。
但是这给出了一个错误。方法maxValue()未定义类型ArrayList。我想做这种类型的计算,我需要在程序中的其他方法中多次使用方法。我如何让它工作?
答案 0 :(得分:3)
您正在调用getMaximumValue()和getMinimumValue()作为UnifiedList上的静态方法调用。
double range = getMaximumValue() - getMinimumValue()
应该能得到你想要的东西。
答案 1 :(得分:1)
在类中定义的方法可以在此类的任何位置访问。此外,由于您使用了“public”访问修饰符,因此可以从包中的任何其他类访问您的方法。但是,要在不同包中的类中访问它们,您需要导入该类。请参阅文档here以及有关访问修饰符here的更多信息。
您还可以简化range()方法:
public double range() {
return (getMaximumValue() - getMinimumValue());
}
答案 2 :(得分:1)
简而言之:
double range = getMaximumValue() - getMinimumValue();
但让我们解释一下。
首先,我不确定这段代码是如何编译给你的。
以“classname.methodname”的形式调用方法是针对静态方法的,所以当你调用StatisticalList.getMaximumValue()
时,java编译器希望在那里看到一个静态方法。
我想你也想要它。您希望getMaximumValue
在ArrayList
中找到值中的最大值。所以你应该在“this”对象上调用这个方法。只需从此行中删除2 x StatisticalList.
,然后按如下所示进行操作:
double range = getMaximumValue() - getMinimumValue();
此外,您还应该小心如何实现get__Value()方法。
您的收藏集延伸ArrayList
,因此它基本上是ArrayList<Object>
它可以容纳各种类型的对象。不仅是数字。
将类定义更改为
public class StatisticalList extends ArrayList<Double> {
可能会更有意义。
尝试一下..
答案 3 :(得分:0)
语法StatisticalList.getMaximumValue()
基本上用于调用静态方法。
您尝试调用的方法是instance
方法。
所以,如果你想在同一个班级中调用它们
double range = getMaximumValue() - getMinimumValue();
如果您想在其他地方使用reference
StatisticalList
StatisticalList s = new StatisticalList();
double range = s.getMaximumValue() - s.getMinimumValue();