关于接口的一点疑问 我在书上看到说接口是不允许产生对象的,但有时候看到诸如“List l;”之类的语句,而容器List就是一个接口,它为什么能定义对象呢?请指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是请你注意了这个l有new过么?没有吧比如某方法:fun(List l){.......}又有某类 class classABC implements List{.....}真正使用时传递的参数是实现这个接口的类fun(classABC)或者List l=new classABC(); List l,这里的l,是个变量,而不是对象,所谓的对象,是在内存中占有空间的。如果只List l,那么,不会为l分配内存空间,只会把这个l放到堆栈中,一旦把一个实例化的对象,赋值给了l.l就指向了那个实例化的对象,而这个实例化的对象,是占有内存空间的。类似的还有:Map map=mew HashMap();这是一个很常用的用法。Map是个接口,声明了个变量map,是Map类型,然后,new 一个HashMap(),new 了之后,内存中就有这么一个HashMap对象了,内存空间也按照HashMap的默认大小分配了,然后通过= ,把这个变量map指向了刚new出来的HashMap对象。还例如:Map map1=new TreeMap() 应该是Map map=new HashMap();不是Map map=mew HashMap(); 躺着敲的键盘,难免敲错……呵呵 List list = new ArrayList(); Think in java 惹得货 万物皆对像 StrictMath中的函数返回值异常 谁能详细说一下java语言中的副本是什么意思,与引用有什么关系? 已知的三个数(比如,a,b,c),随机显示其中一个 请问如何在 java 中设置本机系统时间? 帮我看看这个程序 请问java weblogic.ejbc 时出错 制作可执行的JAR文件 帮我看看这个问题! sql简单问题,40分! 程序中控制鼠标自动移动到一个指定的位置。 请教读取excel表格时,数组越界问题 关于menuitem快捷键```
这个l有new过么?没有吧比如某方法:fun(List l){.......}
又有某类 class classABC implements List{.....}真正使用时传递的参数是实现这个接口的类fun(classABC)或者List l=new classABC();
如果只List l,那么,不会为l分配内存空间,只会把这个l放到堆栈中,一旦把一个实例化的对象,赋值给了l.
l就指向了那个实例化的对象,而这个实例化的对象,是占有内存空间的。
类似的还有:
Map map=mew HashMap();
这是一个很常用的用法。Map是个接口,声明了个变量map,是Map类型,然后,new 一个HashMap(),new 了之后,内存
中就有这么一个HashMap对象了,内存空间也按照HashMap的默认大小分配了,然后通过= ,把这个变量map指向了刚new
出来的HashMap对象。
还例如:
Map map1=new TreeMap()
不是Map map=mew HashMap();
躺着敲的键盘,难免敲错……呵呵