您的位置:首页 > 编程语言 > Java开发

java内部类的作用(一)----解决函数参数返回的问题

2014-11-03 18:02 267 查看
我们知道一个函数只有一个返回值,如果当返回很多数据的时候,这个返回值是需要处理的,也就是返回值的类型(数组或者自定义类来解决)

当我们要处理做一个处理的时候,需要返回两个以上的参数的时候,就可以用内部类解决这个问题

而如果此时这个作为返回值的内部类不需要引用外围类对象的话,就可以加上STATIC 静态内部类 取消产生内部类的作用

因为内部类对象总有一个隐式引用,它指向了创建它的外部对象



当你使用了静态Static来修饰这个内部类的时候,这个引用将被取消。

也就是有这样一个特性:

静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他所有内部类完全一样

接下来我们看看java技术核心提供的代码:

内部类:

package org.innerclass.operate;

public class ArrayAlg {

public static class Pair{
private double first;
private double second;

public Pair(double f,double s){
first = f;
second = s;
}

public double getFirst() {
return first;
}

public double getSecond() {
return second;
}
}

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);
}
}
测试类:

package org.innerclass.operate;

public class StaticInnerClassTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
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());
}
}

}


这里还有一句话:

这个示例中内部类必须是静态的,因为外部类对象是在静态方法中构造这个内部类的对象的。

如果没有static,表示这个内部类是静态内部类,那么编译器将会给出错误报告:

没有可用的隐式ArrayAlg类型对象初始化内部类对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐