java - 基于String的简单Java类型

标签 java

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

我有很多地方我通常只使用一个字符串来保存不透明的 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.

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

关于java - 基于String的简单Java类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555388/

相关文章:

java - 带有嵌入式 Jetty 的 Swagger

java - Spring 数据 - JPA,缺少 ID

java - select 中不区分大小写的 JPA 性能

java - 在 Kafka 连接器中设置分区策略

java - 是否可以记录是否使用了JVM中的类?

java - JSF FacesTagExtraInfo 类不在 JSF 1.2 v 中

java - 如何在 Spring JDBC 中回滚事务?

java - finalize() 方法的良好用途

线程 "main"java.net.UnknownHostException : Test: Test: unknown error OS ubuntu 中的 java 异常

java - Spring 自动扫描组件失败