基于String的简单Java类型

时间:2012-09-23 19:11:33

标签: java

我想要一种基于String生成类型安全类型的简单方法。

我有很多地方,我通常只使用一个字符串来保存不透明的UID(例子),我想离开它。

java.lang.String是最终的。理想情况下,我希望扩展String,但我知道我不能这样做。我最好的选择是什么?

我知道我可以使用封装,但如果可能的话,我正在寻找更高效的东西。

更新:我希望该类型有一个有意义的名称,即不仅仅是UUID。

2 个答案:

答案 0 :(得分:3)

字符串继承自CharSequence

如果更改引用类型CharSequence,则可以使用StringBuilder或任何其他可变CharSequence。

希望它有所帮助。

答案 1 :(得分:3)

因为String被声明为final,我认为封装是你唯一可以做的事情。要提供某种级别的插件兼容性,您可以声明您的类实现CharSequence

public class TypeSafeStringBase implements CharSequence {
    protected final String mString;
    protected TypeSafeStringBase(String string) {
        mString = string;
    }
    @Override
    public char charAt(int index) {
        return mString.charAt(index);
    }
    @Override
    public int length() {
        return mString.length();
    }
    @Override
    public CharSequence subSequence(int start, int end) {
        return mString.subSequence(start, end);
    }
    @Override
    public String toString() {
        return mString;
    }
}

public class ParamName extends TypeSafeStringBase {
    ParamName(String string) {
        super(string);
    }
}

public class Prompt extends TypeSafeStringBase {
    Prompt(String string) {
        super(string);
    }
}

// etc.

您可以考虑声明基类为每个子类实现SerializableComparable<String>(或类型安全Comparable。)