我想要一种基于字符串生成类型安全类型的简单方法。
我有很多地方我通常只使用一个字符串来保存不透明的 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
)。
关于java - 基于String的简单Java类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555388/