如何在java中创建新的字符串类型

如何在java中创建新的字符串类型,java,arrays,class,types,Java,Arrays,Class,Types,我需要创建一个新类-myType。我想将字符串项作为myType添加到列表中。 示例(它不正确,但可以解释我需要什么): 据我所知,我需要在toMyType中创建toString analog?您不能假装类字符串类型的实例是字符串,反之亦然 而String是一个final类,因此不能创建子类 而且,就唱片而言,如果你能做这两件事中的任何一件,那么它将是不好的,这是有充分理由的 也许,最接近您想要做的事情就是创建一个自定义类型的CharSequence。。。并且依赖于这样一个事实:许多标准API接

我需要创建一个新类-myType。我想将字符串项作为myType添加到
列表中。
示例(它不正确,但可以解释我需要什么):


据我所知,我需要在toMyType中创建toString analog?

您不能假装类字符串类型的实例是
字符串,反之亦然

String
是一个
final
类,因此不能创建子类

而且,就唱片而言,如果你能做这两件事中的任何一件,那么它将是不好的,这是有充分理由的

也许,最接近您想要做的事情就是创建一个自定义类型的
CharSequence
。。。并且依赖于这样一个事实:许多标准API接受
字符序列
,而不是
字符串
。或者,您应该将自定义类型设置为字符串保持器类型。。。就像@TimB用他的答案说明的那样



基于您最后的评论和之前的问题,我认为您实际需要做的是为
ArrayList
实现一个Xstream。或者你也可以使用Xstream。当然,对应用程序类型进行黑客攻击以使XML看起来漂亮似乎是错误的方法。

您的问题不是很清楚,但:

ArrayList<MyType> attemptList = new ArrayList<MyType>();
            attemptList.add(new MyType("Loading time"));


class MyType {
        private String type;

        public myType(String type) {
            this.type = type;
        }
        public String getType() {
            return type;
        }
    }
ArrayList attemptList=new ArrayList();
add(新的MyType(“加载时间”);
类MyType{
私有字符串类型;
公共myType(字符串类型){
this.type=type;
}
公共字符串getType(){
返回类型;
}
}
现在,您可以构造一个包含
字符串的
MyType
,您可以查询
字符串
,您可以将
MyType
添加到
列表


对于大多数XML转换库中的XML流,可以使用注释或配置告诉XML库如何映射每个字段。只需在Java中使用一个简单的字符串,然后适当地配置映射。不要为了映射而破坏Java代码。

您可以创建自己的类,该类包含
字符串
对象,并重写
toString()
方法,以便在打印出对象时获得包含的字符串,如下图所示

private class MyClass() {

    public String innerString;

    public MyClass(String s) {
        innerString = s;
    }

    @Override
    public String toString() {
        return innerString.toString();
    }
}
然而,除了有效地重命名类之外,这没有什么意义。此外,如果希望对字符串使用字符串操作,则必须在
innerString
字段上调用该方法。例如:

MyClass a = new MyClass("test string");
a.innerString.substring(0,5);

所有其他
String
方法都可以被重写,类似于
toString()
,但如果这是您需要的,我建议重新考虑您的方法,因为重新实现现有类会提示设计问题。

您为什么要做这样的事情?嗯。。。为什么不
ArrayList
?老实说,你到底想做什么还不清楚。这个ArrayList将被Xstreamed转换成XML,我想添加别名来重命名每个myType Classis,我同意@JonSkeet。从你的例子中不清楚你希望实现什么。我只是做了一些假设,并讨论了一些明显的可能性。
private class MyClass() {

    public String innerString;

    public MyClass(String s) {
        innerString = s;
    }

    @Override
    public String toString() {
        return innerString.toString();
    }
}
MyClass a = new MyClass("test string");
a.innerString.substring(0,5);