小编tqu*_*rat的帖子

用于生成 JavaScript 代码的 Java 库

我需要从 Java 程序内部生成 JavaScript (ECMAScript) 代码。为此,我正在寻找类似JavaPoet 的东西,但生成 JavaScript 作为输出。

我不能使用将另一种语言翻译成 JavaScript 的这些转译器中的一个(例如 GWT 不是答案),也不能使用从语法树生成 JavaScript 的工具(只有当有一个库可以帮助构建该语法树时......)。

像已经提到的 JavaPoet 之类的东西将是答案,因为它在内存使用和代码大小方面的占用空间都非常小。

生成的 JavaScript 代码的目标是 Java/JSR 223 (Nashorn),如果这相关的话。

指定要求:JavaPoet 使用此代码

MethodSpec main = MethodSpec.methodBuilder("main")
    .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
    .returns(void.class)
    .addParameter(String[].class, "args")
    .addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!")
    .build();

TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
    .addModifiers(Modifier.PUBLIC, Modifier.FINAL)
    .addMethod(main)
    .build();

JavaFile javaFile = JavaFile.builder("com.example.helloworld", helloWorld)
    .build();
javaFile.writeTo(System.out);
Run Code Online (Sandbox Code Playgroud)

创建此 Java 代码

package com.example.helloworld;

public final class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, JavaPoet!");
  }
}
Run Code Online (Sandbox Code Playgroud)

(我已经从 JavaPoet …

javascript java code-generation jsr223

5
推荐指数
1
解决办法
3054
查看次数

如何获得 Instant#ofEpochSecond(?) 的最大值

我刚刚发现 具有Instant#ofEpochSecond(epochSecond)最小值/最大值。

这里是源代码。

// Instant.java
    /**
     * The minimum supported epoch second.
     */
    private static final long MIN_SECOND = -31557014167219200L;
    /**
     * The maximum supported epoch second.
     */
    private static final long MAX_SECOND = 31556889864403199L; // << I WANT THIS VALUE!
Run Code Online (Sandbox Code Playgroud)

我如何以MAX_SECOND编程方式获取?

我试图弄清楚Range

        final var range = ChronoField.INSTANT_SECONDS.range();
        log.debug("        minimum: {}", range.getMinimum());
        log.debug(" largestMinimum: {}", range.getLargestMinimum());
        log.debug("        maximum: {}", range.getMaximum());
        log.debug("smallestMaximum: {}", range.getSmallestMaximum());
Run Code Online (Sandbox Code Playgroud)

并且没有运气。

03:53:36.120 [                main] DEBUG -         minimum: -9223372036854775808
03:53:36.122 [                main] …
Run Code Online (Sandbox Code Playgroud)

java epoch instant java-time

2
推荐指数
1
解决办法
78
查看次数

标签 统计

java ×2

code-generation ×1

epoch ×1

instant ×1

java-time ×1

javascript ×1

jsr223 ×1