1

文字列に基づいてタイプセーフタイプを生成する簡単な方法が欲しいのですが。

私は通常、不透明なUIDを保持するために文字列だけを使用する場所がたくさんあります(例)。これから離れたいと思います。

java.lang.String最終です。理想的には延長したかったのStringですが、それができないことは理解しています。私の最良の選択肢は何ですか?

カプセル化を使用できることはわかっていますが、可能であれば、もう少し効率的なものを探しています。

更新:タイプに意味のある名前が必要です。つまり、どこでもUUIDだけではありません。

4

2 に答える 2

3

String はCharSequenceから継承します

参照型 CharSequence を変更する場合は、StringBuilder またはその他の変更可能な CharSequence を使用できます。

それが役に立てば幸い。

于 2012-09-23T19:21:21.830 に答える
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.

Serializableand (または各サブクラスComparable<String>のタイプ セーフ)を実装する基本クラスを宣言することも検討してください。Comparable

于 2012-09-23T19:25:44.463 に答える