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

时间:2014-02-12 07:54:31

标签: java arrays class types

我需要创建新类 - myType。我想将List<Object>中的String项添加为myType。 示例(这不正确,但可以解释我需要的内容):

ArrayList<Object> attemptList = new ArrayList<Object>();
            attemptList.add(Sting.toMyType("Loading time"));

我有:

class myType {
        private String type;

        public myType() {
            type = new String();
        }
        public myType toMyType(String string) {
            type.**????**
            return(this);
        }
    }

据我了解,我需要在toMyType中创建toString模拟?

3 个答案:

答案 0 :(得分:1)

你的问题不是很明确,但是:

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;
        }
    }

现在您可以构建包含MyType的{​​{1}},您可以查询String,然后将String添加到MyType

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

答案 1 :(得分:1)

您可以创建自己的包含String对象的类,并覆盖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(),但如果这是您需要的,我建议重新考虑您的方法,因为重新实现现有类提示设计问题。

答案 2 :(得分:0)

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

Stringfinal类,因此您无法创建子类。

并且,为了记录,如果你可以做其中任何一件事,那么为什么它会糟糕有合理的理由......

或许,你最接近你想要做的就是创建一个自定义类型的CharSequence ...并依赖于许多标准API接受CharSequence的事实而不是String。或者也许你应该让自定义类型成为String holder类型......就像@TimB用他的答案说明的那样。


根据您的上一条评论和之前的问题,我认为您实际需要做的是为ArrayList<String>实施Xstream Converter。或许你可以使用Xstream Annotations来做到这一点。当然,攻击你的应用程序类型以使XML看起来不错似乎是错误的方法。