java接口变量问题

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接口的私有类。这样以来就明朗了

时间: 2024-10-06 09:41:57

java接口变量问题的相关文章

Beetl通过JAVA接口获取JAVA中的变量

模板语言绑定变量都是程序主动绑定到beetl,经过努力现在在beetl上实现了模板语言主动发出请求,来执行绑定. 最近做项目用到beetl,因为模板需要用到的变量很多,如果直接绑定,系统消耗很大. 产生了一个想法,当beetl解析不到变量的时候,通过JAVA接口直接获取对象返回给BEETL继续进行解析. 最终实现了Beetl主动发起绑定变量的功能. 修改的代码见最后. 调用时的代码如下: StringTemplateResourceLoader resourceLoader = new Stri

Java定义接口变量为接收类型有什么好处(面向接口编程)

个人理解:定义接口变量为接收类型属于面向接口的编程,通过接口的抽象能减少类之间的耦合,增加可复用性. 面向接口编程: 一种规范约束 制定者(或者叫协调者),实现者(或者叫生产者),调用者(或者叫消费者). 接口本质上就是由制定者来协调实现者和调用者之间的关系. 只有实现者和调用者都遵循“面向接口编程”这个准则,制定者的协调目的才能达到. 接口的语义是can-do语义,表约束(Constraint). 像JDBC的规范API,不管你使用哪一套实现,我们使用的时候都是使用相同的API. 分离设计与实

Java 接口和抽象类区别

1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了.当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 .面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用. 说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点. 既然面向对象设计的重点在于

js去java的变量

jsp在服务器上首先会被编译成.java文件并会编译成.class文件.你看看这些java文件就会发现这些东西其实都是java中httpservelet接口的实现类.url指向某一个jsp页面的时候服务端就会调用这个jsp变成的.class文件(这些.class文件最终).jsp看起来是前台的展示代码,实质确是运行在后台的东西.加入有个变量 arg=10jsp中这样写:<script>var time=<%=arg%>;alert(time);</script>这个js

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09|  分类: JAVA |  标签:java  |举报|字号 订阅 下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法.2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法.4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclips

[ Java4Android ] Java的变量

视频来自:http://www.marschen.com/ 1.什么是变量 2.变量的声明 3.变量分为那些类型? 什么是变量? 1.计算机是一种极度精确的机器; 2.要将信息存储在计算机中,就必须指明信息存储的位置和所需要的存储空间; 3.在Java变成语言中,使用生命语句来完成上述的任务; 变量的声明方法 int age; 变量类型 变量名 表示语句结束 这条语句使计算机分配足够的空间,用于存储一个整数,而这个整数的名字就叫age.int是java定义的一种数据类型,专门用于存储一定大小的整

Java 接口和抽象类--缺省模式

一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了.当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 .面对对象的设计,复用的重点其实应该是抽象层的复用,而不是具体某一个代码块的复用. 说到了抽象,我就不能不提到曾让我头痛的Java接口和Java抽象类了,这也是本文我想说的重点. 既然面向对象设计的重点在于抽象,那J

java接口的意义

java当中继承一个接口,要重写他的方法的话,那为什么还要多此一举的去实现一个接口呢? 直接把方法写在类当中不就可以了?就是说去掉类名后面的Implements 接口 ,可以不可以呢? 接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,[接口名] [对象名]=new [实现接口的类],这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理.就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.met

Andorid Binder进程间通信---Java接口源代码--System和应用程序进程间通信

本文参考<Android系统源代码情景分析>,作者罗升阳 一.架构代码: ~/Android/frameworks/base/core/java/android/os ----IInterface.java (Interface) ----IServiceManager.java (IServiceManager) ----IBinder.java (IBinder) ----Binder.java (BinderProxy,Binder) ----ServiceManagerNative.j