使用 StringTemplate 中的参数调用 Java 函数?

2024-03-09

StringTemplate 允许程序员通过 getter(不带参数的函数)获取数据。

我想知道是否可以使用字符串模板中的参数调用Java函数?


有一个解决方法是滥用字典。这是一个实现“函数”的示例,用于限制列表中的项目数量(github 上的问题 https://github.com/antlr/stringtemplate4/issues/197).

在您的代码中添加字典:

group.defineDictionary("max", new MaxListItemsLimiter());

用法(在此示例中,数组中的第一项是最大项数):

<max.(["50",myObject.items]):{msg|<msg.something>}>

final class MaxListItemsLimiter extends AbstractMap<String, Object> {

    @Override
    public Object get(Object key) {
        List items = (List) key;
        if (!items.isEmpty()) {
            //First item is max. count
            Integer limit = NumberUtils.toInt(items.get(0).toString(), -1); //use Integer.parseInt
            if (limit != -1) {
                return items.subList(1, Math.min(items.size(), limit + 1));
            } else {
                throw new AssertionError("First parameter in max must be number");
            }
        } else {
            return super.get(key);
        }
    }

    @Override
    public Set<Map.Entry<String, Object>> entrySet() {
        return Collections.emptySet();
    }

    @Override
    public boolean containsKey(Object key) {
        if (key instanceof List) {
            return true;
        } else {
            throw new AssertionError("You can use max only on Lists.");
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 StringTemplate 中的参数调用 Java 函数? 的相关文章

  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • Node.JS 中的 createReadStream

    所以我使用了 fs readFile 它给了我 致命错误 CALL AND RETRY LAST 分配失败 进程超出 记忆 由于 fs readFile 在调用回调之前将整个文件加载到内存中 我应该使用 fs createReadStrea
  • CSS 过渡在悬停时闪烁

    太棒了 你用宝贵的时间阅读我的问题 我正在尝试在悬停时翻转 div 一切都很顺利 但在转换过程中它会闪烁 看起来几乎像是翻转了多次 这破坏了翻转的整体效果 下面是我的代码和小提琴 小提琴 FIDDLE http jsfiddle net h
  • WinRT 应用程序中的 app.config 相当于什么?

    在 Windows 桌面开发 WinForms WPF 中 app config是放置应用程序中使用的连接字符串或 uri 等内容的潜在位置 这允许最终用户在应用程序范围内更改这些设置 而无需开发人员重新构建和重新部署 WinRT应用程序中
  • Intellij / Android Studio 可以折叠注释吗?

    我在intellij中注释掉了这段代码 如您所见 此处无法折叠评论 然而 Webstorm 中相同的注释块可能会被折叠 有没有办法在intellij Android Studio中配置注释折叠 折叠任意选定的块 在编辑器中选择连续的代码片段
  • Django CSRF 框架有很多失败

    我的站点上的 CSRF Django 中间件 来自 SVN trunk 的版本 出现了很多失败 我得到的唯一错误是 CSRF 失败 原因 CSRF 令牌丢失或不正确 我如何诊断这些 CSRF 错误来自何处 我自己无法导致 CSRF 错误 但
  • 验证错误:向后分支上存在未初始化的对象/JVM 规范 4.10.2.4

    The JVM 规范 4 10 2 4 版本 7 最后一段 http docs oracle com javase specs jvms se7 html jvms 4 html jvms 4 10 2 4 says 如果未初始化对象的特殊
  • 更改 EditText setError 可绘制重力

    对于将要填充 RTL 文本的 EditText 有没有办法改变错误可绘制对象 当然还有弹出窗口 的重力 这是一个常规错误可绘制的示例 因此 由于输入的文本是 RTL 我希望弹出窗口显示在 EditText 的左侧 我尝试应用自定义绘图 但是
  • JavaFX 在列表视图中显示字符串附近的图像[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想在列表视图中的字符串附近显示一条消息我尝试查找它但我不太理解它我从网站上尝试了这个http docs oracle com javafx
  • 如何在 spring 中将图像转换为多部分文件

    我有一个图像文件并正在创建File具有该图像的对象 File file new File E Shared Data Images xyz jpg 上面的行正在创建一个file具有某种尺寸的物体 例如440272 我需要转换上面的image
  • 我使用 getifaddrs 得到错误的 IP 地址

    获取以太网指定IP地址的函数 char get ethernet ip const char ethernet char ip size t len struct ifaddrs ips int rc getifaddrs ips if r
  • 通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗?

    我使用 mmap 文件在进程之间共享数据 代码是这样的 struct Shared int Data int file open file dat O RDWR Shared shared static cast
  • 在 Python 中利用蒙特卡洛预测收入

    我正在尝试在我的 Python 代码中实现蒙特卡罗模拟 这将帮助我确定实现与收入目标相关的各种阈值的几率 例如 我们每个财年达到 6 000 美元 7 000 美元或 8 000 美元的可能性有多大 我能够计算预期值 但还没有编写模拟代码
  • C中的浅拷贝和深拷贝

    我尝试用谷歌搜索这个 但结果只弹出面向对象的语言 根据我的理解 浅复制是复制结构的某些成员 所以可以说一个结构是 typedef struct node char ok int hi int yep struct node next nod
  • 如何避免在选项卡栏状态下堆叠导航历史记录

    选项卡 A 选项卡 B 选项卡 C 如下所示的状态 选项卡 a 选项卡 b 选项卡 c 我想关闭应用程序 就像在每个选项卡状态切换时没有导航历史记录一样 例如 我在选项卡 A 中 然后单击选项卡 B 然后从现在开始单击选项卡 C 如果用户按
  • 使用关联进行分页的 grails 中 Hibernate 查询的不同结果

    我有三个相互关联的班级 最初 我构建没有分页的查询 所有搜索结果都很好 但现在我需要分页并且不想打扰我的初始查询模式 有什么方法可以得到明显的结果 Class Department int id String name static has
  • 如何使用SwingWorker?

    朋友们 我正在开发一个java应用程序 这就是性能监控 在此基础上 我在一个类中获取值并在另一类中绘制图表 我想使用 Swingworker 交替执行这两堂课 ResultSet rs Connection conn null conn C
  • 如何让 Get-ADUser 在针对特定服务器时表现更好?

    我正在从域中的所有用户获取一系列属性 如果我不指定特定的域控制器 查询将在不到一秒的时间内返回有效结果 如果我指定目标控制器 即使在最近的域控制器上 结果也需要 18 秒才能返回 唯一的区别是我使用了目标服务器 Server serverN
  • 编号列表框

    我有一个已排序的列表框 需要显示每个项目的行号 在此演示中 我有一个带有 Name 字符串属性的 Person 类 列表框显示按姓名排序的人员列表 如何将行号添加到列表框的数据模板中 XAML
  • 使用 ASP.Net MVC 与 Web 表单相比的最大优势

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 使用其中一种相对于另一种有哪些优点 主要优点ASP net MVC are 启用对呈现的 HT
  • 使用 StringTemplate 中的参数调用 Java 函数?

    StringTemplate 允许程序员通过 getter 不带参数的函数 获取数据 我想知道是否可以使用字符串模板中的参数调用Java函数 有一个解决方法是滥用字典 这是一个实现 函数 的示例 用于限制列表中的项目数量 github 上的