Java 枚举方法到 Delphi

2023-12-27

public enum HTTPHeaderKey {
    CACHE_CONTROL("Cache-Control"), CONNECTION("Connection"), TRANSFER_ENCODING("Transfer-Encoding"), HOST("Host"), USER_AGENT("User-Agent"), CONTENT_LENGTH("Content-Length"), CONTENT_TYPE("Content-Type");
    private final String str;

    private HTTPHeaderKey(final String _str) {
        str = _str;
    }

    /** Over ridden toString returns the HTTP/1.1 compatible header */
    public String toString() {
        return str;
    }
};

我正在尝试将此枚举转换为 Delphi。我知道如何定义枚举变量,但我不知道如何在枚举中插入方法?

或者有人可以建议另一种方法来转换它?


您可以使用记录助手来完成此任务,该助手适用于从 XE3 开始的值类型。例如:

{$APPTYPE CONSOLE}

uses
  System.SysUtils, System.TypInfo;

type
  TMyEnum = (enumValue1, enumValue2);

  TMyEnumHelper = record helper for TMyEnum
  public
    function ToString: string;
  end;

function TMyEnumHelper.ToString: string;
begin
  Result := GetEnumName(TypeInfo(TMyEnum), ord(Self));
end;

begin
  Writeln(enumValue1.ToString);
  Writeln(enumValue2.ToString);
end.

该程序输出以下内容:



enumValue1
enumValue2
  

当然你可能更喜欢这样做:

{$APPTYPE CONSOLE}

uses
  System.SysUtils, System.TypInfo;

type
  TMyEnum = (enumValue1, enumValue2);

  TMyEnumHelper = record helper for TMyEnum
  private
    const
      EnumNames: array [TMyEnum] of string = ('Friendly name 1', 'Friendly name 2');
  public
    function ToString: string;
  end;

function TMyEnumHelper.ToString: string;
begin
  Result := EnumNames[Self];
end;

begin
  Writeln(enumValue1.ToString);
  Writeln(enumValue2.ToString);
end.

这里的输出是:



Friendly name 1
Friendly name 2
  

这可能会让您解决 Delphi 枚举类型不支持 Java 中可用的文本命名这一事实。

另一种方法,构造函数HTTPHeaderKey枚举类型不支持。原因是它需要状态,而 Delphi 枚举类型的唯一状态是枚举类型值本身。您不能像 Java 代码中那样移植额外的实例变量。

考虑到所有因素,我认为尝试使用枚举类型进行直译是行不通的。我建议您使用记录或类进行翻译,并使用可用的 Delphi 语言结构构建等效的功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 枚举方法到 Delphi 的相关文章

  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • 使用 Inno Setup 中格式化(部分粗体)的文本制作安装程序?

    有人看过 GOG com 游戏安装程序吗 如何制作像这样的欢迎文本字符串 包括单个标题中的路径和需要大小 其中部分内容加粗 以下是修改安装路径后如何更改字符串换行的示例 您可以使用TRichEditViewer http www jrsof
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • Spring Kafka - 为任何主题的分区消耗最后 N 条消息

    我正在尝试读取请求的卡夫卡消息数 对于非事务性消息 我们将从 endoffset N 对于 M 个分区 开始轮询并收集当前偏移量小于每个分区的结束偏移量的消息 对于幂等 事务消息 我们必须考虑事务标记 重复消息 这意味着偏移量将不连续 在这
  • CustomTaskChange 在调用 updateSQL 时实际执行

    我有一个CustomTaskChange在 Liquibase 中 除了其他变更集 我希望我的应用程序在实际执行之前显示所有 ChangeSet 的 SQL 以我的理解 updateSQL应该预览 SQL 并且不执行任何操作 ACustom
  • 我的 Delphi 11.1 调试器在 x64 项目上突然变得非常缓慢;大约一周前还可以。有什么想法吗?

    更新 拔掉网络 电缆和wifi 会导致 几乎 恢复正常的调试速度 已尝试禁用防火墙没有任何变化 但没有网络恢复正常服务 更新 2 所有 Windows x64 版本都存在缓慢问题 而不仅仅是单个大型项目 如果我构建并调试 32 位 Wind
  • 是否有适用于 Java 的 Harel Statechart DSL 工具?

    我正在寻找一种能够理解 DSL 的工具 在其中我可以定义生成 Java 代码的状态图 或者 DSL 中的状态图可以按原样运行 该工具最好用 Java 编写 并且必须根据 Harel 状态图 或等效的 UML 2 状态机 的定义支持超级状态和
  • 当 datasnap 服务器中的用户授权失败时,是否可以更改响应代码?

    当用户授权失败时 是否可以更改 DataSnap Delphi XE3 服务器中的 HTTP 响应代码 目前正在回归HTTP 1 1 500 内部服务器错误 这可能发生在许多其他场景中 并且无助于描述问题 按照同样的想法 是否可以更改默认的
  • 如何在Netbeans中自定义jTable标题列字体大小?

    我尝试改变jtable标题字体大小Netbeans 但还不能 无论如何 表行字体大小已成功更改 这是我使用的方法 更改后的输出 问题 标题字体大小未更改 但我也想改变这一点 所以请帮助我该怎么做 一种方法是使用UIManager并替换默认的
  • 如何获取属于某个进程的打开句柄的计数?

    您可以使用该程序流程浏览器 http technet microsoft com en us sysinternals bb896653查看正在运行的应用程序有多少个句柄 有没有办法用Delphi代码来获取这个数字 我有兴趣跟踪应用程序本身
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • 错误:libXext.so.6:无法打开共享对象文件:没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 运行尝试打开 ods 文件的 java 文件时出现以下错误 线程 main 中出现异常 java lang UnsatisfiedLinkError opt software jdk1 6 0 45 jre li
  • Java JDT 解析器。获取VariableDeclarationFragment的变量类型

    我一直在用 JDT 实现 Java 解析器 但我不知道当变量的节点类型为变量声明片段 我只有在涉及到时才发现如何获取变量类型变量声明 我的代码如下 public boolean visit VariableDeclarationFragme
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • 通过命令行增加Java中的MaxPermSize内存

    您能否解释一下如何增加此 PermSpace 大小 我正在使用 Gate 应用程序并加载大量数据和大量插件 不幸的是每次运行后都会出现有关内存不足 maxPermSpace 的错误 我到处搜索 但我找不到如何通过命令行增加这个大小 或者可能
  • Delphi XE 和 OmniXML:使用 SelectNode()?

    我将以下 XML 片段作为一个更大的 XML 文件的一部分 我正在使用最新的 OmniXML 快照进行处理
  • java.lang.Object#getClass() 的 Eclipse 外部空注释

    我正在使用 Eclipse Mars 中提供的外部空注释工具 我正在尝试添加外部注释java lang Object getClass 但似乎无法正确签名 我尝试过以下变体 NonNull Class getClass L1java lan
  • Tomcat 与 Weblogic JNDI 查找

    我们使用的 Weblogic 服务器已配置为允许 JNDI 数据源名称 例如 appds 对于开发 本地主机 我们可能会运行 Tomcat 并且在 server xml 的 部分中声明时 Tomcat 会将 JNDI 数据源挂在 JNDI
  • 删除子类中的注释?

    我有一个子类 需要一个注释 在删除的父类中声明 做这个的最好方式是什么 public class Parent MyAnnoation String foobar public class Child extends Parent here

随机推荐

  • Athena 在不同账户的表之间查询

    我可以使用两个不同的 IAM 角色单独访问两个不同的 Athena 表 因为每个角色位于不同的账户中 有没有办法运行从两者中提取的单个查询 即 INNER JOIN 在引擎盖下 Athena 表数据位于 S3 存储桶中 Athena 支持跨
  • 为什么 EF 为简单查询生成子查询?

    有一个简单的 Linq to EF var query from p in db Posts where p BlogtId blogId select p 它会生成以下形式的 SQL SELECT Extent1 PostId Exten
  • 如何同步div的两个滚动条

    我有这个文件比较代码 http jsfiddle net CrN6X http jsfiddle net CrN6X 现在它满足了我的需要 一个只垂直滚动的大 div 两个仅水平滚动的较小潜水 这样我可以很容易地比较我的文件 但我有一个问题
  • 按内部数组的字段之一对多维数组进行排序

    如何按内部数组的字段之一对多维数组进行排序 在Java中 如何创建这样的多维数组 以及如何按 X 字段对其进行排序 有什么例子吗 Array 0 gt Array name gt Sony TV price gt 600 00 1 gt A
  • 获取两个条件(在不同数组上)为真的数组的索引

    我有两个 numpy 数组 a and b 我想选择所有索引a 1 and b 0 也就是说 如果我有以下数组 a 0 1 3 5 1 1 2 b 1 0 2 5 3 0 6 我想取回以下索引 1 5 我应该如何在 numpy 中执行此操作
  • 将“rand()”与“having”一起使用

    我有一个包含记录列表的表 每次迭代 必须从特定偏移量开始随机选择一组 每一行都有机会被选取 例如 新的或不经常选取的行会被选取更多 然而 某物不起作用 导致返回不满足使用别名的条件的行rand 我正在尝试使用以下查询 select id p
  • ag 网格服务器端分页“当网格位于绘制行中间时无法让网格绘制行”

    我有一个像这样的聚合组件 private gridOptions columnDefs this columnDefs frameworkComponents buttonRenderer ButtonRenderer pagination
  • 如何使用 gsub 将包含下划线的字符串部分转换为 Logstash 中的括号

    我想转换 例如 你好 1 再见 到 你好 1 再见 注意 1 即括号内仅包含数字 我从这样的事情开始 但不起作用 filter mutate gsub gt String D D Note that String here could be
  • 如果 edittext 包含该单词,如何为 Android 文本的一部分着色

    只要用户在编辑文本中输入 house 我就会尝试为单词 house 着色 这就是我所做的 if textA getText toString equals house String name String valueOf textA get
  • C++ 中 .inl 文件的含义

    在 inl 文件中进行声明有哪些优点 我什么时候需要使用相同的 inl文件从来都不是强制性的 对编译器没有特殊意义 这只是构建代码的一种方式 为可能阅读代码的人提供提示 I use inl文件分两种情况 用于内联函数的定义 用于函数模板的定
  • Symfony 控制器无法访问容器

    因此 我重新安装了 Symfony 3 尝试设置一些 API 路由 但我无法访问控制器内的容器 我的控制器从基本 Symfony 控制器扩展而来 它具有ContainerAwareTrait 但是当我尝试做时 this gt contain
  • Chrome 打包应用程序无法与 jquery 和 jquery mobile 配合使用

    使用 jQuery 1 10 2 和 jQuery Mobile 1 3 2 我尝试使用以下简单的 html 创建一个 chrome 打包应用程序 div div 有两个问题 首先 jQuery 将拦截加载 events js 的脚本标签并
  • Elastic beanstalk 上的 psycopg2 - 无法部署应用程序

    我正在将我的第一个应用程序 Flask 部署到 EB 但遇到了障碍 使用 PostgreSQL 需要我安装 psycopg2 但我不知道如何让它运行 我在这篇文章中看到 Amazon Elastic Beanstalk 上的 Psycopg
  • django-two-factor-auth 无法访问管理站点

    我正在将 django two factor auth 用于网络应用程序 我无法访问管理页面 我知道我输入了正确的凭据 当我输入不正确的凭据时 我会收到相应的错误消息 当我输入正确的凭据时 页面会使用以下 URL 重新加载 http loc
  • Rails:不是 ember,不是 JS 响应,而是介于两者之间的东西

    我正在开发一个标准的 Rails 应用程序 到目前为止我还没有使用任何 AJAX 只是使用了很好的 HTML 我的计划是迭代地添加 远程 链接和所有此类内容以及对 JS 响应的支持 因为我知道生成 JS 服务器端是非常非常邪恶的 但我发现它
  • 在 PHP 中压缩 GIF 图像质量?

    如何在 PHP5 中压缩 GIF 图像文件 我知道可以像这样使用 JPG imagejpeg resource filename quality 根据http us php net manual en function imagejpeg
  • JavaScript 中测试给定参数是否为平方数的最佳方法是什么?

    我创建了一个函数来测试给定的参数是否是平方数 在这里阅读有关平方数的内容 https en wikipedia org title Square number https en wikipedia org title Square numb
  • 如何将 summarise_each 应用于除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 我正在分析一组包含许多列 近 30 列 的数据 我想根据两列对数据进行分组 并将求和函数和均值函数应用于除时间戳之外的所有列 如何在除时间戳之外的所有列上使用 summarise each 这是我的代码草案 但显
  • Javascript 注入浏览器

    每当我访问任何页面时 我都会使用 4g wifi 互联网 它会不断加载 当我查看页面的源代码时 会发现代码中注入了一个脚本 请帮助它真的很烦人 我刚刚发现这是我的 ISP 在浏览器中注入了 javascript 所以我通过使用解决了这个问题
  • Java 枚举方法到 Delphi

    public enum HTTPHeaderKey CACHE CONTROL Cache Control CONNECTION Connection TRANSFER ENCODING Transfer Encoding HOST Hos