java内部类的作用(一)----解决函数参数返回的问题
2014-11-03 18:02
267 查看
我们知道一个函数只有一个返回值,如果当返回很多数据的时候,这个返回值是需要处理的,也就是返回值的类型(数组或者自定义类来解决)
当我们要处理做一个处理的时候,需要返回两个以上的参数的时候,就可以用内部类解决这个问题
而如果此时这个作为返回值的内部类不需要引用外围类对象的话,就可以加上STATIC 静态内部类 取消产生内部类的作用
因为内部类对象总有一个隐式引用,它指向了创建它的外部对象
当你使用了静态Static来修饰这个内部类的时候,这个引用将被取消。
也就是有这样一个特性:
静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他所有内部类完全一样
接下来我们看看java技术核心提供的代码:
内部类:
这里还有一句话:
这个示例中内部类必须是静态的,因为外部类对象是在静态方法中构造这个内部类的对象的。
如果没有static,表示这个内部类是静态内部类,那么编译器将会给出错误报告:
没有可用的隐式ArrayAlg类型对象初始化内部类对象
当我们要处理做一个处理的时候,需要返回两个以上的参数的时候,就可以用内部类解决这个问题
而如果此时这个作为返回值的内部类不需要引用外围类对象的话,就可以加上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类型对象初始化内部类对象
相关文章推荐
- CString的GetLength()函数返回为0问题解决
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- 多线程error C3867: 函数调用缺少参数列表问题解决办法:
- Python os模块中的isfile()和isdir()函数均返回false问题解决方法
- 解决函数中返回局部指针变量的问题,加深理解《堆和栈》问题。
- js,java实现escape()和unescape()函数解决以给方式提交中中文参数问题
- 编程中函数的返回值的定义问题的解决
- SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!
- C++ - 函数模板(function template)右值引用参数 问题 及 解决
- 关于php页面最大执行时间问题(set_time_limit函数在windows下不起作用的解决)
- Matlab solve函数参数传递问题解决方法
- 用va_start() va_end()函数解决不定参数问题(即,fun(...)实现方法)
- 返回值类型为unsigned long long的函数永远返回为0的问题解决
- asp.net c#的传参中经常使用到中文参数的处理,下面的函数可以解决中文参数的问题
- C#动态链接库函数OUT参数返回问题
- 用内嵌汇编来解决运行时参数不确定的函数的调用问题
- 用内嵌汇编来解决运行时参数不确定的函数的调用问题
- JavaScript 内部函数作用域问题及解决方法
- httpurlconnection post 和GET 分别传递2个参数给后台,返回JSON 解决乱码问题
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题