当前位置:  开发笔记 > 编程语言 > 正文

我可以在Java中向String类添加新方法吗?

如何解决《我可以在Java中向String类添加新方法吗?》经验,为你挑选了4个好方法。

我想在Java中的String类中添加一个方法AddDefaultNamespace(),这样我就可以输入"myString".AddDefaultNamespace()而不是DEFAULTNAMESPACE +"myString",以获得类似"MyDefaultNameSpace.myString"的内容.我不想添加另一个派生类(例如PrefixedString).

也许这种方法对你不好,但我个人讨厌使用"+".但是,无论如何,是否可以在Java中向String类添加新方法?

感谢致敬.



1> GustyWind..:

String 是一个最终类,这意味着它无法扩展到您自己的实现.



2> 小智..:

嗯,实际上每个人都缺乏想象力.我需要编写自己的startsWith方法版本,因为我需要一个不区分大小写的方法.

class MyString{
    public String str;
    public MyString(String str){
        this.str = str;
    }
    // Your methods.
}

然后它很简单,你就像这样制作你的String:

MyString StringOne = new MyString("Stringy stuff");

当你需要在String库中调用一个方法时,这样做很简单:

StringOne.str.equals("");

或类似的东西,你有它...扩展String类.


开箱即用=).

3> Alex Miller..:

正如其他人都注意到的那样,你不允许扩展String(由于最终).但是,如果您感觉非常疯狂,可以修改String本身,将其放在jar中,并在-cbootclasspath/p:myString.jar之前添加bootclasspath以实际替换内置的String类.

由于我不会进入的原因,我实际上已经这样做了.您可能有兴趣知道即使您可以替换类,但是String在Java的每个方面的内在重要性意味着它在整个JVM启动过程中使用,并且一些更改将简单地破坏JVM.添加新方法或构造函数似乎没有问题.添加新字段非常冒险 - 特别是添加对象或数组似乎会破坏事情,尽管添加原始字段似乎有效.



4> jrudolph..:

这是不可能的,因为String是Java中的最终类.

您可以一直使用辅助方法为前缀添加前缀.如果您不喜欢它,您可以查看Groovy或Scala,JRuby或JPython都是与Java兼容的JVM语言,并允许这样的扩展.

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有