OpenJDK 中使用的代码模板系统是什么?它是如何工作的?
What is the code templating system used in the OpenJDK? How does it work?
OpenJDK 中的一些代码接缝使用了模板系统。例如:
- https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/X-Buffer.java.template
- https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template
普通Java开发人员可以在自己的代码中使用这个模板系统来生成重复代码吗?代码模板是如何设置的?语法是什么?
在 Java 11 中,似乎使用名为“spp”的内置工具将模板文件转换为 Java。 (Java) 源代码中的注释说:
* Spp: A simple regex-based stream preprocessor based on Mark Reinhold's
* sed-based spp.sh
评论继续总结预处理器语法。您可以在“make/jdk/src/classes/build/tools/spp”目录的源代码树中找到所有内容。
Can this templating system be used by normal Java developers in one's own code to generate repetitive code?
没有什么能阻止你这样做。但是,该工具不是官方 Java 工具链的一部分,也不包含在 OpenJDK 构建生成的发行版中。
How is the code template set up?
呃……我猜你是用文本编辑器写的。您可以在源代码中找到命令语法,并在生成的构建 Makefile 中找到示例。
What is the syntax?
见上文。它记录在源代码中。
注意:以上内容不应被解释为关于是否使用“Spp”的建议。
OpenJDK 中的一些代码接缝使用了模板系统。例如:
- https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/X-Buffer.java.template
- https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/nio/ByteBufferAs-X-Buffer.java.template
普通Java开发人员可以在自己的代码中使用这个模板系统来生成重复代码吗?代码模板是如何设置的?语法是什么?
在 Java 11 中,似乎使用名为“spp”的内置工具将模板文件转换为 Java。 (Java) 源代码中的注释说:
* Spp: A simple regex-based stream preprocessor based on Mark Reinhold's
* sed-based spp.sh
评论继续总结预处理器语法。您可以在“make/jdk/src/classes/build/tools/spp”目录的源代码树中找到所有内容。
Can this templating system be used by normal Java developers in one's own code to generate repetitive code?
没有什么能阻止你这样做。但是,该工具不是官方 Java 工具链的一部分,也不包含在 OpenJDK 构建生成的发行版中。
How is the code template set up?
呃……我猜你是用文本编辑器写的。您可以在源代码中找到命令语法,并在生成的构建 Makefile 中找到示例。
What is the syntax?
见上文。它记录在源代码中。
注意:以上内容不应被解释为关于是否使用“Spp”的建议。