gpt4 book ai didi

java - 使用单个美元符号 `$` 作为 java 类名有什么风险吗?

转载 作者:太空狗 更新时间:2023-10-29 22:44:17 25 4
gpt4 key购买 nike

最初我使用下划线 _ 作为类名。新的 Java8 编译器提示它“可能在 Java SE 8 之后不受支持”。我将其更改为 $,并且不再有警告。但是我记得 Java 使用 $ 来指示字节码中的内部/嵌入类。我想知道使用美元符号 $ 作为类名是否有任何风险

这个问题的一些背景。我想做的是克服Java不支持纯函数的事实,_或$是放一个命名空间来封装一些非常通用的概念(类/静态方法)。我也没有为此命名,也不希望 lib 用户键入太多内容来引用该命名空间。这是显示我正在做的事情的代码:https://github.com/greenlaw110/java-tool/blob/master/src/main/java/org/osgl/_.java

最佳答案

在 Java 的任何标识符中使用 $ 是一种糟糕的风格,并且有潜在的风险。之所以有风险,是因为 $ 字符是为 Java 工具链和第三方语言工具保留的。

  • Java 编译器在内部类和嵌套类的“内部”类名中使用它。
  • Java 编译器在合成属性的名称中使用它。
  • 它可以被第三方代码生成器(例如注释处理器)用于各种目的。
  • 它可以被其他以 JVM 平台为目标的语言使用,并且可能需要与您的代码共存。

目前您可能不会遇到普通 $ 类名的技术问题(至少对于标准 Java 工具链而言)。但总有这种情况在未来会发生变化的可能性:

  • 他们(有效地)保留更改此1的权利。
  • _ 示例中有这样做的先例。

如果你真的、真的需要一个单字符的类名,最好安全使用 FZ 或其他非保留的东西.

但老实说,我认为您最好尝试实现(或只是使用)一种真正的函数式语言,而不是尝试将函数式编程“系统”硬塞进 Java。或者,在正式发布之前切换到 Java 8。因为我会拒绝阅读/维护看起来像 jquery 的 Java 代码库。


I don't mean to create a functional lib for Java, just want to create a lib to maintain some common utilities I used. Again, I am a advocate of minimalism and feel suck with things like apache commons. The functional stuff is added to help me easier to manipulate collection(s).

如果是您的代码,您可以随心所欲。自己做决定。根据您的意见采取行动。做一个“冒险者”……:-)。 (我们对 $ 等的建议……没有实际意义。)

但是,如果您是为客户或雇主编写此代码,或者打算创建一个(可行的)开源产品,那么您需要考虑其他人的意见。例如,如果您在其他地方找到一份薪水更高的工作,您的老板需要了解您的代码的可维护性。总的来说,下一个人是否能够解决问题,让您的代码保持新鲜等等……还是会被扔进垃圾箱?


1 - JLS §3.8指出“$ 字符应该只用在机械生成的源代码中”。那就是说“使用它后果自负”。假设是,如果标准工具链使用裸露的 $,那么构建自己的源代码生成器的人可以更改它们……但是更改大量手写的代码更难代码,这将成为升级的障碍。

关于java - 使用单个美元符号 `$` 作为 java 类名有什么风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com