请问一下classloader的问题,我写了个class继承ClassLoader

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:48:25
然后new MyClassLoader().findClass("...")调用父类的方法为什么不行啊,说不可见,可是明明findClass在父类中是protected的啊?为什么啊,谢谢

1.调用格式不对
new后边必须要跟构造方法来创建对象,而finClass显然不是构造方法
应该 MyClassLoader mcl = new MyClassLoader();
Class myclass = mcl.findClass();
2.jdk帮助文档里有这样一句话
网络类加载器子类必须定义方法 findClass 和 loadClassData,以实现从网络加载类。下载组成该类的字节后,它应该使用方法 defineClass 来创建类实例
以及一个示例
class NetworkClassLoader extends ClassLoader {
String host;
int port;

public Class findClass(String name) {
byte[] b = loadClassData(name);
return defineClass(name, b, 0, b.length);
}

private byte[] loadClassData(String name) {
// load the class data from the connection
. . .
}
}

子类可以直接调用父类的方法没错,但是总有例外的