1

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

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

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

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

更新:我想要一个有意义的类型名称,即不仅仅是到处都是 UUID。

4

2 回答 2

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.

您可能还考虑声明要实现的基类Serializable和(或每个子类Comparable<String>的类型安全)。Comparable

于 2012-09-23T19:25:44.463 回答
3

字符串继承自CharSequence

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

希望能帮助到你。

于 2012-09-23T19:21:21.830 回答