【问题标题】:Eclipse file replacement before compile (like a pre-processor)?编译前的 Eclipse 文件替换(如预处理器)?
【发布时间】:2016-03-01 06:01:41
【问题描述】:

所以,鉴于 Java 几乎不支持无符号类型,我现在正在编写一个小型 API 来处理这些(目前,我有 UnsignedByteUnsignedInt)。算法很简单:将它们中的每一个存储为它们的更高表示(byte->shortint->long),扩展Number 类并实现一些计算和表示实用方法。

问题是:实际上,每次都必须编写如下代码非常冗长且无聊:

UnsignedByte value = new UnsignedByte(15);
UnsignedByte convert = new UnsignedByte(someIntValue);

我想知道:有没有办法在 Eclipse 上实现类似“文件预处理器”的东西,在编译文件之前它会自动用其他预定义的字符串替换一些预定义的字符串? 例如:将U(x)替换为new UnsignedByte(x),这样就可以使用:

UnsignedByte value = U(15);
UnsignedByte convert = U(someIntValue);

是的,我可以创建一个名为 U(...) 的方法并使用 import static,但即便如此,为每个使用我的无符号类型的类都这样做会很麻烦。

我可以编写一个简单的 Java 程序来替换文件中的这些表达式,但问题是:我如何将它集成到 Eclipse 上,使其每次编译 Java 文件时都会调用/使用它?

【问题讨论】:

  • 您可能会考虑使用 Guava,它已经拥有这些库 - 您不需要将无符号字节表示为短字节,如果操作正确,您可以用有符号字节表示。
  • 虽然我已经提供了答案,但我认为您不会喜欢它。无论如何,您现在使用的是 Java,Java 很冗长,并且工具可以提供帮助。也就是说,使用工厂是个好主意,所以除了过度缩短的名称“U”之外,像工厂一样使用它可能是一个很好的论据。无论如何,Ctrl-Space 是你的朋友!

标签: java eclipse eclipse-plugin preprocessor unsigned


【解决方案1】:

我可以指出我所知道的一个项目是如何做到这一点的,他们有一组 Python 脚本,可以从模板基础文件生成一整套类(java 文件)。他们手动运行脚本,而不是构建的一部分。

查看here 的具体示例。在这段代码中,他们有一个用于对double 进行操作的类,但他们希望从这个类中以相同的方式生成对floatint 等进行操作的代码。

当然,关于是否应将生成的代码签入源存储库存在很大争议。我把这个问题放在一边,希望上面的例子对你有所帮助。

【讨论】:

    【解决方案2】:

    我建议使用 Eclipse 模板来代替。我知道它并不完全符合您的要求,但它非常简单,可以开箱即用。

    当您在 Eclipse 中编写 sysout 并按 Ctrl+Space 时,它​​会为您提供一个选项来替换它为 System.out.println();

    您可以在以下链接中找到更多信息

    How to add shortcut keys for java code in eclipse

    【讨论】:

    • 我要为你节省两次击键...syso -> Ctrl+Space
    • 好吧,也许我会用它作为最后的手段......但我仍然会等待一个神奇的有效响应。
    • 我假设您不想使用预编译的 java 源代码并希望使用原始源代码。如果是这种情况,将很难将您的堆栈跟踪与您的代码相关联。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多