java clone 方法 调用问题


public static Class<?> getProxyClass(ClassLoader loader,Class<?>... interfaces)
        throws IllegalArgumentException
    {
        final Class<?>[] intfs = interfaces.clone();
        final SecurityManager sm = System.getSecurityManager();
        if (sm != null) {
            checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
        }

        return getProxyClass0(loader, intfs);
    }


clone 方法在Object中是protected的,以上代码来自反射包下Proxy类.为什么interfaces.clone();可以调用clone() ??

//因为他是个数组.

作用域 当前类 同一package 子孙类 其他package

public √ √ √ √

protected √ √ √ ×

friendly √ √ × ×

private √ × × ×

传递的对象是个数组, 数组是有clone方法的。