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

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

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

而如果此时这个作为返回值的内部类不需要引用外围类对象的话,就可以加上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类型对象初始化内部类对象

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券