首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java内部类的作用(一)----解决函数参数返回的问题

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

作者头像
wust小吴
发布2019-07-05 11:35:20
1.5K0
发布2019-07-05 11:35:20
举报
文章被收录于专栏:风吹杨柳风吹杨柳

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年11月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档