我想要一种基于 String 生成类型安全类型的简单方法。
我有很多地方我通常只使用一个字符串来保存不透明的 UID(示例),我想远离这个。
java.lang.String
是最终的。理想情况下,我希望扩展String
,但我知道我不能这样做。我最好的选择是什么?
我知道我可以使用封装,但如果可能的话,我正在寻找更有效的东西。
更新:我想要一个有意义的类型名称,即不仅仅是到处都是 UUID。
我想要一种基于 String 生成类型安全类型的简单方法。
我有很多地方我通常只使用一个字符串来保存不透明的 UID(示例),我想远离这个。
java.lang.String
是最终的。理想情况下,我希望扩展String
,但我知道我不能这样做。我最好的选择是什么?
我知道我可以使用封装,但如果可能的话,我正在寻找更有效的东西。
更新:我想要一个有意义的类型名称,即不仅仅是到处都是 UUID。
因为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