日期:2014-05-20  浏览次数:20842 次

接口和抽象类不能实例化对象,那这个是什么意思?
Lterator是个接口,有是在程序中会出现这样的代码

Arraylist   a   =   new   Arraylist;
Integer   b   =   new   Integer(20);
a.add(b);
Lterator   c   =   a.lterator;//这句代码是什么意思,是不是实例化对象呢?

还有一个问题,在查API是有的类后面会有一个 <E> 这是什么意思,ArrayList <E> ?

------解决方案--------------------
ArrayList a=new ArrayList(); //少括号
Iterator第一个字母是I,不是L
Iterator c=a.Iterator();
这个方法是继承自AbstractList的
方法说明如下:
iterator

public Iterator <E> iterator()

返回以正确顺序在此列表的元素上进行迭代的迭代器。

此实现返回 iterator 接口的一个直接实现,具体取决于底层 list 的 size()、get(int) 和 remove(int) 方法。

注意,除非重写该列表的 remove(int) 方法,否则此方法返回的迭代器将抛出一个 UnsupportedOperationException 来响应其 remove 方法。

在面临并发修改时,可以使此实现抛出运行时异常,如 (protected) modCount 字段规范中的描述。

指定者:
接口 Iterable <E> 中的 iterator
指定者:
接口 Collection <E> 中的 iterator
指定者:
接口 List <E> 中的 iterator
指定者:
类 AbstractCollection <E> 中的 iterator

返回:
以正确顺序在此列表的元素上进行迭代的迭代器。
所以这里返回的是Iterator的实现类的实例


------解决方案--------------------
严格的来说:抽象类和接口只是不能通过自身的构造方法来实例化,但是可以使用子类的构造方法来实例化。
------解决方案--------------------
Iterator c = a.iterator();
A是ArrayList的对象,用a.iterator转换成迭代器的形式也就是c对象

Iterator 是个接口吧?不能 new Iterator()

还有ArrayList <E> ?
“ <> ”里面是类型,这是JDK1.5开始有的功能——范型
可以这么理解,这个ArrayList对象里面放的元素的类型都是“ <> ”里面规定的类型
------解决方案--------------------
ArrayList <E> ?
泛型程序设计
------解决方案--------------------
关于a.Iterator()是怎么回事,LZ可以看看jdk源码,我也没看。:)
至于E是1.5新加的,以前的是存储一些Object对象,会导致转换时出现一些问题,
------解决方案--------------------
up
------解决方案--------------------
ArrayList <T> a = new ArrayList <T> ();

你可以把这个当数组看,而T就表示你要存储在这个数组里面的类型,比如你创建了一个Eamy类,那么你就可以把T写成Eamy.在这个ArrayList <T> 里面所存储的对象,也就是类的数据(我只是简单的说,当然并不是只有这样,)比如你调用ArrayList <Eamy> 的方法,a.add(new Eamy(45, "aaa "));那么就把45和aaa存储到了ArrayList <Eamy> 数组里面去了,数组索引从0开始.如果数组里面已经有了另外的对象,那么add插入是从最后开始.

Lterator a; 这个是一个接口,是JAVA标准库里一个常用的接口,接口不能实例化,说白了也就是不能用new Lterator();这样的构造器来引用它.
也就是说,如果有这样一个接口,

public interface ILei{

void fangFa();

}
在这个接口里面并没有一般类里面的构造器,比如

public class Lei1 implements ILei{

private int a;

public Lei1(int a){

this.a = a;

}

void fangFa(){ }

}
如果是上面这样的类,那么我就可以通过构造器来实例化,Lei a = new Lei(10);
而且接口本身规定就不允许对它实例化.只要记得接口和抽象类在这点是一样的,都是不允许实力化对象.但是却可以引用对象.比如.
public class Lei{

public static void main(String[] args){

ILei a = new Lei1(10);
a.fangFa();
System.out.println(a);

}

}
在对对象引用;接口和抽象类相似,但是必须有一点,那就是如果是接口,那必须要实现了接口才能用接口类对对象引用,如果是抽象类,必须要继承了抽象类才能对这个类引用.

你所说的实例化是不可能的,不允许的,我上面这个程序片段不叫实例化,只能叫这个接口类型引用了实现他的类的对象.


------解决方案--------------------
接口不可以实例化,我最近用一套API,全是接口,用起来真的让人头痛
------解决方案--------------------
LZ 看这个不知道会不会晕?
ActionListener listener=new AcitonListener() {