public class A extends ClassLoader {    public static void main(String[] agrs) {
        System.out.print(ClassLoader.getSystemClassLoader().findLoadedClass("A"));
    }
}
源程序如上,编译报错说: ClassLoader.getSystemClassLoader().findLoadedClass("A") 有错。还提示一个单词,protected  好像是说findLoadedClass是protected访问域,疑惑,我这是ClassLoader的子类,可以访问protected呀。程序究竟错在哪里了,请高人指教!

解决方案 »

  1.   

    findLoadedClass("A")你是怎么定义的?ClassLoader里应该是没这个方法
      

  2.   

    有这个方法的。还是final方法。不允许重写。下面是API中的描述findLoadedClass
    protected final Class<?> findLoadedClass(String name)如果 Java 虚拟机已将此加载器记录为具有给定二进制名称的某个类的启动加载器,则返回该二进制名称的类。否则,返回 null。
    参数:
    name - 类的二进制名称 
    返回:
    Class 对象,如果类没有被加载,则返回 null
    从以下版本开始: 
    1.1
      

  3.   

    ClassLoader.getSystemClassLoader()你的A 不是上面这个类的子类 只是ClasLoader的子类所以对A来说是不可见的