问一下,关于
Applet类中的getAppletContext()这个静态方法的一个代码.我们用getAppletContext()方法得到的是AppletContext接口的对象..AppletContext接口里有个
showDocument()方法,我就纳闷了,在Applet里面可以直接这样写:
getAppletContext().showDocument(new URL("http://www.baidu.com"),"_parent");为什么呢?接口的方法可以直接调用吗?不是,那么是什么类实现了这个接口呢??getAppletContext()方法返回的AppletContext类型,是哪个类实现的呢??
Applet类中的getAppletContext()这个静态方法的一个代码.我们用getAppletContext()方法得到的是AppletContext接口的对象..AppletContext接口里有个
showDocument()方法,我就纳闷了,在Applet里面可以直接这样写:
getAppletContext().showDocument(new URL("http://www.baidu.com"),"_parent");为什么呢?接口的方法可以直接调用吗?不是,那么是什么类实现了这个接口呢??getAppletContext()方法返回的AppletContext类型,是哪个类实现的呢??
补习下java基础,另外标题要写的低调些,高手一般不喜欢回答简单问题.
public AppletContext getAppletContext() {
return stub.getAppletContext();
}
//stub在某个时刻被注入了,我本人不熟悉Applet不了解是什么时刻,根据猜想这个注入的工作就是applet的特有的
public final void setStub(AppletStub stub) {
this.stub = (AppletStub)stub;
}
从这段注释上分析,我想这个对象就是applet特殊之处,他不允许序列化,应该是在页面加载的时候被注入的,你可以去翻阅底层源码jni部分,我不是做研究但感觉你是
/**
* Applets can be serialized but the following conventions MUST be followed:
*
* Before Serialization:
* An applet must be in STOPPED state.
*
* After Deserialization:
* The applet will be restored in STOPPED state (and most clients will
* likely move it into RUNNING state).
* The stub field will be restored by the reader.
*/
transient private AppletStub stub;
List getList(){return new ArrayList();}getList().someListMethod();//List是接口,能直接调用接口方法吗?
内部用到的实现类