我想要一种基于String生成类型安全类型的简单方法。
我有很多地方,我通常只使用一个字符串来保存不透明的UID(例子),我想离开它。
java.lang.String
是最终的。理想情况下,我希望扩展String
,但我知道我不能这样做。我最好的选择是什么?
我知道我可以使用封装,但如果可能的话,我正在寻找更高效的东西。
更新:我希望该类型有一个有意义的名称,即不仅仅是UUID。
答案 0 :(得分:3)
答案 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.
您可以考虑声明基类为每个子类实现Serializable
和Comparable<String>
(或类型安全Comparable
。)