java接口變量問題
阿新 • • 發佈:2017-06-09
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接口變量問題