核心Java第1卷第6章6.4.7静态内部类
那里。核心Java第1卷第6章6.4.7静态内部类,java,inner-classes,Java,Inner Classes,那里。 我一直在从CoreJavaVolume19thEdition学习Java,我对书中的一个示例(清单6.8)有点困惑 为什么类“ArrayAlg”的方法名(minmax)前面有一个“Pair”? public static Pair minmax(double[] values) 源代码如下: package staticInnerClass; public class StaticInnerClassTest { public static void main(Str
我一直在从CoreJavaVolume19thEdition学习Java,我对书中的一个示例(清单6.8)有点困惑
为什么类“ArrayAlg”的方法名(
minmax
)前面有一个“Pair”?public static Pair minmax(double[] values)
源代码如下:
package staticInnerClass;
public class StaticInnerClassTest
{
public static void main(String[] args)
{
double[] d = new double[20];
for (int i = 0; i < d.length; i++)
d[i] = 100 * Math.random();
ArrayAlg.Pair p = ArrayAlg.minmax(d);
System.out.println("min = " + p.getFirst());
System.out.println("max = " + p.getSecond());
}
}
class ArrayAlg
{
/**
* A pair of floating-point numbers
*/
public static class Pair
{
private double first;
private double second;
/**
* Constructs a pair from two floating-point numbers
* @param f the first number
* @param s the second number
*/
public Pair(double f, double s)
{
first = f;
second = s;
}
/**
* Returns the first number of the pair
* @return the first number
*/
public double getFirst()
{
return first;
}
/**
* Returns the second number of the pair
* @return the sceond number
*/
public double getSecond()
{
return second;
}
}
/**
* Computes both the minimum and the maximum of an array
* @param values an array of floating-point numbers
* @return a pair whose first element is the minimum and whose second element is the maximum
*/
public static Pair minmax(double[] values)
{
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
for (double v : values)
{
if (min > v)
min = v;
if (max < v)
max = v;
}
return new Pair(min, max);
}
}
包静态内部类;
公共类静态类测试
{
公共静态void main(字符串[]args)
{
double[]d=新的double[20];
对于(int i=0;iv)
min=v;
如果(最大值
声明公共静态对minmax(double[]值)
中的对
是方法的返回类型。Pair
是一个内部类这一事实无关紧要,如果它是一个顶级类,那么声明看起来会完全相同(当然,假设您导入了该类).Pair
是ArrayAlg
的静态内部类-声明类型为Pair
的变量有多种方法,但最常见的方法如下所示,声明形式如下:
[outer class].[inner class] [variable name] = ...
这就好像外部类只是您感兴趣的类(类型)的完整路径(包括包)中的另一个级别
虽然可以说编译器可以从方法返回类型推断变量类型,但Java不是这样工作的,因此必须明确。这是方法返回值的类型。另一方面,根据JLS,静态内部类不存在。它被称为嵌套类。内部类从来都不是静态的。