1. 程式人生 > >java接口變量問題

java接口變量問題

quest img req sts pdf red items close 技術分享

java中接口是不能實例化的,然而像下面這種用法是可以的:

          List<FileItem> items = upload.parseRequest(request);
                Iterator<FileItem> iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = iter.next();
                    File file=new File("D:\\b.pdf");
                    
if(!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } BufferedOutputStream bos
=new BufferedOutputStream(new FileOutputStream(file)); BufferedInputStream bfis=new BufferedInputStream(item.getInputStream()); byte b[]=new byte[2048]; int read=bfis.read(b,0,2048); while(read!=-1) {
bos.write(b,0,read); read=bfis.read(b,0,2048); } bfis.close(); bos.flush(); bos.close();

主要看這二行:

List<FileItem> items = upload.parseRequest(request);

Iterator<FileItem> iter = items.iterator();

去List找源碼

技術分享

List是接口沒有實現,去找一個實現了List的類(ArrayList就可以)

技術分享

可以看到實際上是返回了一個Itr:

技術分享

Itr的定義在下面:

技術分享

一個實現了Iterator接口的私有類。這樣以來就明朗了

java接口變量問題