You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Java对象转换为可直接用于源码的Java字面量字符串?

Java字面量转换工具方案

1. JDK 9+ 内置方案(无第三方依赖)

JDK 9开始自带的JShell模块原生支持该能力,直接调用即可完全匹配需求:

import jdk.jshell.JShell;

public class LiteralUtil {
    private static final JShell JSHELL_INSTANCE = JShell.create();

    public static String toLiteral(Object value) {
        return JSHELL_INSTANCE.varValue(value);
    }

    public static void main(String[] args) {
        String str = "hello";
        double d = 1.5;
        long myLong = 100L;
        int[] ints = new int[] { 5, 6 };

        System.out.println(toLiteral(str)); // 输出 "hello"
        System.out.println(toLiteral(d)); // 输出 1.5
        System.out.println(toLiteral(myLong)); // 输出 100L
        System.out.println(toLiteral(ints)); // 输出 new int[]{5, 6}
    }
}

模块化项目需要在module-info.java中声明requires jdk.jshell;

2. 第三方库方案(兼容全Java版本)

推荐使用业内通用的Java代码生成工具Square JavaPoet,原生支持正确生成各类字面量,无需自行处理任何语法细节:

  1. 引入JavaPoet依赖即可使用
  2. 调用示例:
import com.squareup.javapoet.CodeBlock;

public class LiteralUtil {
    public static String toLiteral(Object value) {
        return CodeBlock.of("$L", value).toString();
    }
}

输出效果和内置JShell方案完全一致,自动处理字符串转义、long类型后缀L、数组初始化语法等所有场景。


内容的提问来源于stack exchange,提问作者Chris Lercher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:27:03