那并不是创造接口的实例,接口是不能直接实例化的,就像你说的,得经过实现后才行。
而你列举的java.util.Enumeration arg_names = request.getParameterNames();这个并不是直接实例化,request.getParameterNames();返回的是Enumeration接口被实现后的对象,那是一个向上塑形的过程。可以这么看,实现接口的类可以看作是该接口的子类(这是java实现多重继承的解决方法)。所以那么写是合法的。好比有父类A,B是其子类,那么我们就可以这么写 A a=new B();这里的A就相当于Enumeration ,而new B()就相当于request.getParameterNames();返回的对象。你可以参看下面这个例子:
interface Face{
String prt();
}
class FaceImpl implements Face{
public String prt(){
return "implements Face";
}
}
class Middle{
public static Face getFace(){
return new FaceImpl();
}
class Last{
public Last(){
//下面这句就相当于你的 java.util.Enumeration arg_names = request.getParameterNames();
Face f = Middle.getFace();
f.prt();
}
}
08-06
08-06
08-06