【问题标题】:How do I rename a java type? (String to string) [closed]如何重命名 java 类型? (字符串到字符串)[关闭]
【发布时间】:2012-07-11 17:04:48
【问题描述】:

我真的习惯在 C# 中使用“字符串”而不是“字符串”。我想知道我能做些什么才能在 Java 中做到这一点。

如果重要的话,我正在使用 Eclipse 的 Java EE IDE。

【问题讨论】:

  • 这是个糟糕的主意。
  • 不建议这样做。
  • 我敢打赌这是不可能的(除了破解 IDE/编译器)。即使是这样,这也是一个非常愚蠢的想法。
  • 它保证没有其他人愿意处理您的代码。你会用 C# 写“字符串”吗?如果不是,为什么只为 Java 改变?用语言要求的习语编写或回到 C#。
  • 只写字符串。或者您可以编写一个预处理器并通过它运行您的所有源代码。称它为 Java#。你可以改变更多的语言。事实上,您可以编写一个编译器并更改整个语言,并将其称为 Scala、Clojure 或 Groovy。如果您想以 JVM 为目标并且不想编写 Java,则可以在 JVM 上运行其他语言。但是如果你想用 Java 写,那就用 Java 写吧。

标签: java string types reference rename


【解决方案1】:

不要。只需使用字符串。你会习惯的。

【讨论】:

    【解决方案2】:

    仅适用于 lulz

    public final class string {
        private final String string;
        public string(String string){
            this.string = string;
        }
        @Override
        public String toString(){
            return string;
        }
    
        //usage
        public static void main(String args[]){
           string myString = new string("Hello World");
           System.out.println(myString);
        }
    }
    

    【讨论】:

    • 也许解释一下这个笑话是个好主意......即为什么这个类(几乎)对 OP 没有用。
    • 我认为他得到了 7 票的反对意见
    • 我不是在为 OP 解释。我说的是为其他人解释......
    【解决方案3】:

    这是不可能的:

    • Java 不允许您重命名或别名类型。每个(类)类型都有一个且只有一个 FQN(即完全限定名称)。任何具有不同 FQN 的类型都是不同的类型。

    • String 类型被声明为final,因此您甚至无法创建便利子类。 (即使这样做,也无济于事,因为您无法更改其余系统库以使用您的类。)

    • 在理论上可行的情况下更改系统库是一个非常非常糟糕的想法,因为它会破坏与阳光下所有事物的兼容性,从您的 Java 工具链和 IDE 开始。

    • 更改 String 的名称将特别困难,因为此类、生成的代码和 JVM 内部之间存在交叉依赖关系。尤其是这个类和 JVM 引导进程之间有一些非常可怕的关系。

    • 即使这样做在技术上可行,但从代码可维护性的角度来看,这仍然是一个坏主意。想想下一个必须阅读和修改你的杂种“Java 看起来像 C#”代码库的人。

    我真的习惯在 C# 中使用“字符串”而不是“字符串”。

    你只需要学会使用String ...就像其他数百万学习过Java的C#程序员一样。

    【讨论】:

      【解决方案4】:

      String 是 Java 中的 wrapper 适当的一等类,与 C# 不同,Java 中没有字符串的原始数据类型。

      Java 中的编码约定规定类需要以大写字母开头。所以,不,你不能重命名它。

      【讨论】:

      • 这是不正确的。 String 是 Java 中适当的一等类:它不是任何东西的“包装器”。事实上,在现代 JVM 中,String 类完全用 Java 实现......没有本地代码。
      • 感谢您的保存。我几乎忘记了包装类是为原始数据类型制作的,如int -> Integer
      • 字符串类在 C# 中也不是原始类型,但它的名称表明它是基本类型,这很好。不过,在编写 C# 时编写 C#,在编写 Java 时编写 Java。课程用马。
      【解决方案5】:

      即使这不是一个坏主意,我也不认为这是可能的。 java中没有typedef,所以你不能给一个类起别名。此外,String 是最终类,因此不能扩展——这意味着您不能扩展 String 并将其称为字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        相关资源
        最近更新 更多