模块  java.management

Class CompositeDataInvocationHandler

  • 实现的所有接口
    InvocationHandler

    public class CompositeDataInvocationHandler
    extends Object
    implements InvocationHandler

    InvocationHandler将getter方法转发到CompositeData 如果您的接口只包含getter方法(例如String getName()boolean isActive() ),则可以将此类与Proxy类结合使用,以生成接口的实现,其中每个getter返回CompositeData相应项的CompositeData

    例如,假设您有一个这样的界面:

       public interface NamedNumber {
           public int getNumber();
           public String getName();
       }
       
    CompositeData构造的CompositeData
       CompositeData cd =
           new CompositeDataSupport(
               someCompositeType,
               new String[] {"number", "name"},
               new Object[] {5, "five"}
           );
       
    然后你可以构造一个实现NamedNumber的对象,并由对象cd支持,如下所示:
       InvocationHandler handler =
           new CompositeDataInvocationHandler(cd);
       NamedNumber nn = (NamedNumber)
           Proxy.newProxyInstance(NamedNumber.class.getClassLoader(),
                                  new Class[] {NamedNumber.class},
                                  handler);
       
    拨打nn.getNumber()将返回5

    如果getter定义的属性的第一个字母是大写,则此处理程序将首先查找以CompositeData开头的CompositeData的项目,如果找不到,则查找以相应的小写字母开头的项目或代码点。 对于名为getNumber()的getter,处理程序将首先查找名为Number的项目,然后查找number 如果getter被称为getnumber() ,那么该项必须被称为number

    如果给予invoke的方法boolean equals(Object)继承自Object的方法boolean equals(Object) ,则当且仅当参数是ProxyInvocationHandler也是CompositeDataInvocationHandler且其支持CompositeData与此对象相等(不一定相同))时,它将返回true。 如果给予invoke的方法int hashCode()继承自Object的方法int hashCode() ,则它将返回与equals此定义一致的值:如果两个对象根据equals相等,则它们将具有相同的hashCode

    从以下版本开始:
    1.6
    • 构造方法详细信息

      • CompositeDataInvocationHandler

        public CompositeDataInvocationHandler​(CompositeData compositeData)

        构造由给定CompositeData支持的处理程序。

        参数
        compositeData - 将为吸气剂提供信息的 CompositeData
        异常
        IllegalArgumentException - 如果 compositeData为空。
    • 方法详细信息

      • getCompositeData

        public CompositeData getCompositeData()
        返回提供给构造函数的 CompositeData
        结果
        这个处理程序支持的CompositeData 这永远不会为空。