枚举类型的映射

From Apache OpenOffice Wiki
Jump to: navigation, search



UNO 枚举类型被映射为同名的公共最终 Java 类,它从 com.sun.star.uno.Enum 类派生而来。只有对生成的最终类的非空引用才是有效的。


此基类 com.sun.star.uno.Enum 声明存储实际值的保护成员、初始化值的保护构造函数以及获取实际值的公共 getValue() 方法。生成的最终类拥有一个保护构造函数以及一个公共方法 getDefault(),后者返回一个实例,此实例以第一个枚举成员的值为默认值。对于 UNO 枚举类型的各成员,对应的 Java 类声明给定 Java 类型的一个公共静态成员,该类型用 UNO 枚举成员的值进行初始化。枚举类型的 Java 类有一个附加的公共方法 fromInt(),此方法返回包含指定值的实例。以下 IDL 定义用于 com.sun.star.uno.TypeClass

  module com { module sun { module star { module uno {
 
  enum TypeClass {
      INTERFACE,
      SERVICE,
      IMPLEMENTATION,
      STRUCT,
      TYPEDEF,
      ...
  };
 
  }; }; }; };

被映射成:

  package com.sun.star.uno;
 
  public final class TypeClass extends com.sun.star.uno.Enum {
      private TypeClass(int value) {
          super(value);
      }
 
      public static TypeClass getDefault() {
          return INTERFACE;
      }
 
      public static final TypeClass INTERFACE = new TypeClass(0);
      public static final TypeClass SERVICE = new TypeClass(1);
      public static final TypeClass IMPLEMENTATION = new TypeClass(2);
      public static final TypeClass STRUCT = new TypeClass(3);
      public static final TypeClass TYPEDEF = new TypeClass(4);
      ...
 
      public static TypeClass fromInt(int value) {
          switch (value) {
          case 0:
              return INTERFACE;
          case 1:
              return SERVICE;
          case 2:
              return IMPLEMENTATION;
          case 3:
              return STRUCT;
          case 4:
              return TYPEDEF;
          ...
          }
      }
  }
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages