proxy-java clone 方法 调用问题

问题描述

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方法的。

时间: 2024-09-04 17:48:18

proxy-java clone 方法 调用问题的相关文章

java 中方法调用的奇怪问题

问题描述 java 中方法调用的奇怪问题 public class Test { /** * @param args */ public static void main(String[] args) { List<String> lista = new ArrayList<String>(); List<String> listb = new ArrayList<String>(); Test tt = new Test(); listb.add(&quo

Java clone()方法来由及用法

Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,特别是先学c.c++后学java的程序员.并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对象.比如函数参数类型是自定义的类时,此时便是引用传递而不是值传递.以下是一个小例子: public class A { public String name; } public class testClone { public void chang

Java远程方法调用RMI

前段时间,公司做web service的时候,看了一下资料,当时看见一个叫rmi的东西(远程方法调用),最近闲着,所以看了一下 ,感觉挺简单的!所以写了一个例子提供给大家把! rmi的服务端,必须要使用接口,同时还有接口的实现类!所以下面的两个文件是接口类和接口的实现类! UserDao 接口: /**   * 远程接口     必须继承与Remote对象   * @author spring sky   * date: 2012年2月7日 10:55:05   * Email:vipa1888

《Java编码指南:编写安全可靠程序的75条建议》—— 指南10:不要使用clone()方法来复制不可信的方法参数

指南10:不要使用clone()方法来复制不可信的方法参数 创建可变方法参数的防御性副本,可以减轻来自各种安全漏洞的威胁,更多信息请参考<The CERT Oracle Secure Coding Standard for Java>[Long 2012]的"OBJ06-J. Defensively copy mutable inputs and mutable internal components".然而,对clone()方法不当地使用,可以使攻击者利用这一漏洞,提供看

分析java中clone()方法 (转载+修改)

  Java中的clone() 方法 java所有的类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制.  protected native Object clone() throws CloneNotSupportedException; 这个javabean必须实现一个标识接口,Cloneable,表明这个javabean支持复制,如果没有实现这个接口,而调用clone()方法,编译器就会抛出CloneNotSupportedException

java object 之clone方法全面解析_java

 1 protected native Object clone() throws CloneNotSupportedException;  1.方法由native关键字修饰 java中的native关键字表示这个方法是个本地方法,[java native说明].而且native修饰的方法执行效率比非native修饰的高. 2.方法由protected修饰 一个类在覆盖clone()方法时候,需要修改成public访问修饰符,这样才能保证其他所有的类都能够访问这个类的这个方法. 3.方法抛出Cl

java方法调用的绑定

将一个方法调用同一个方法主体连接到一起就称为"绑定"(Binding).若在程序运行以前执行绑定(由编译器和链接程序,如果有的话),就叫作"早期绑定".大家以前或许从未听说过这个术语,因为它在任何程序化语言里都是不可能的.C编译器只有一种方法调用,那就是"早期绑定". 上述程序最令人迷惑不解的地方全与早期绑定有关,因为在只有一个Instrument句柄的前提下,编译器不知道具体该调用哪个方法. 解决的方法就是"后期绑定",它意

Java编程那些事儿54—方法调用

7.4 方法调用 方法声明是创建一个新的功能,声明出来的方法在需要的时候可以通过调用执行该方法的功能,方法只有被调用才能被执行. 在Java程序中有一个基本的main方法,其方法声明如下: public static void main(String[] args) 该方法包含在开始的代码框架中,这是一个特殊的方法.Java语法规定,J2SE的代码都从该方法开始执行,如果一个代码中没有main方法,则该代码不能被直接运行.所以main方法也称作J2SE程序的入口方法,在运行程序时,自动调用对应代

Java通过JNI调用C语言的方法

JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能. 解决JAVA对本地操作的一种方法就是JNI. JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式).通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法. 简单介绍及应用如下: 一.JAVA中所需要做的工作 在JAVA程序中,首先需要在类中声明所调