java - 在 DELPHI 中创建一个枚举

标签 java delphi enums

我在 JAVA 中有一个枚举代码。我把所有的JAVA代码都转换成DELPHI。

我快完成了,但我坚持在这里。我不知道如何将枚举转换为 Delphi。

我想知道,这段代码可以转换为 Delphi 吗?

   /**
     * Enum describing the databin class ID's. Methods exist for getting the
     * KakaduClassID and the StandardClassID. I have also included the string
     * representations of the databins as defined for cache model updates.
     * 
     * 
     */
    public enum JPIPDatabinClass {

        /** Precinct data bin class. */
        PRECINCT_DATABIN(KakaduConstants.KDU_PRECINCT_DATABIN, JPIPConstants.PRECINCT_DATA_BIN_CLASS, "P"),

        /** Tile Header data bin class. */
        TILE_HEADER_DATABIN(KakaduConstants.KDU_TILE_HEADER_DATABIN, JPIPConstants.TILE_HEADER_DATA_BIN_CLASS, "H"),

        /** Tile data bin class. */
        TILE_DATABIN(KakaduConstants.KDU_TILE_DATABIN, JPIPConstants.TILE_DATA_BIN_CLASS, "T"),

        /** Main Header data bin class. */
        MAIN_HEADER_DATABIN(KakaduConstants.KDU_MAIN_HEADER_DATABIN, JPIPConstants.MAIN_HEADER_DATA_BIN_CLASS, "Hm"),

        /** Meta data bin class. */
        META_DATABIN(KakaduConstants.KDU_META_DATABIN, JPIPConstants.META_DATA_BIN_CLASS, "M");

        /** The classID as an integer as per the Kakadu library. */
        private int kakaduClassID;

        /** The classID as an integer as per the JPEG2000 Part-9 standard. */
        private int standardClassID;

        /**
         * The classID as a string as per the JPEG2000 Part-9 standard. Used for
         * cache model updates.
         */
        private String jpipString;

        /**
         * Constructor.
         * 
         * @param _kakaduClassID
         * @param _standardClassID
         * @param _jpipString
         */
        JPIPDatabinClass(int _kakaduClassID, int _standardClassID, String _jpipString) {
            kakaduClassID = _kakaduClassID;
            standardClassID = _standardClassID;
            jpipString = _jpipString;
        }

        /** Returns the classID as an integer as per the Kakadu library. */
        public int getKakaduClassID() {
            return kakaduClassID;
        }

        /** Returns the classID as an integer as per the JPEG2000 Part-9 standard. */
        public int getStandardClassID() {
            return standardClassID;
        }

        /**
         * Returns the classID as a string as per the JPEG2000 Part-9 standard. Used
         * for cache model updates.
         */
        public String getJpipString() {
            return jpipString;
        }

    };

最佳答案

这个 Enum 可以很容易地转换成一个普通的旧 Delphi 类,它有一个像 Java Enum 一样的三参数构造函数和三个只读公共(public)属性。

JPIPDatabinClass = class(TObject)
private
  ...
public
  constructor Create(AKakaduClassID: Integer; AStandardClassID: Integer; AJPIP: string);

  property KakaduClassID: Integer; read FKakaduClassID;
  property StandardClassID: Integer; read FStandardClassID;
  property JPIP: string; read FJPIP;
end;

和“单例样式”实例:

function PRECINCT_DATABIN: JPIPDatabinClass;
function TILE_HEADER_DATABIN: JPIPDatabinClass;
...

implementation

var
  FPRECINCT_DATABIN: JPIPDatabinClass;
  FTILE_HEADER_DATABIN: JPIPDatabinClass;
...
  FPRECINCT_DATABIN := JPIPDatabinClass.Create( ... );
  FTILE_HEADER_DATABIN := JPIPDatabinClass.Create( ... );
...  

function PRECINCT_DATABIN: JPIPDatabinClass;
begin
  Result := FPRECINCT_DATABIN;
end;

function TILE_HEADER_DATABIN: JPIPDatabinClass;
begin
  Result := FTILE_HEADER_DATABIN;
end;
...

注意:这种方法的缺点是不会创建真正的 Delphi 枚举类型,它只是将 Java 枚举类型模拟为不可变的 Delphi 对象。

关于java - 在 DELPHI 中创建一个枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29028618/

相关文章:

德尔福。 socket 。仅在一个节点/MAC 地址上的 TIdHttp 套接字连接上访问被拒绝。必发API

c# - 如何从类型变量中获取枚举的默认值

java - 将类枚举传递给克隆是否克隆安全?

java - GWT 下载 Excel .xlsx 给我一个损坏的文件

java - 如何修改我的程序以允许用户指定值之间的整数步长

java - 双向链表中的递归方法

java - ConnectException 在一台机器上,但在另一台机器上没有

c# - 在线程内 sleep 的替代方法

Delphi进度条

python - 如何在 Python 中记录和使用类似枚举的数据类型?