2014-02-12 57 views
0

我需要创建新的类 - myType。我想将字符串项目作为myType添加到List<Object>。 实例(这是不正确的,但它可以解释什么,我需要):如何在java中创建新的字符串类型

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模拟?

+0

你为什么想要做这样的事情? – Maroun

+0

呃......为什么不'ArrayList '? – bcrist

+4

说实话,你真的不清楚你想做什么。 –

回答

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(),但如果这是你需要,我会建议重新考虑你的方法,如重新实现现有类什么暗示设计问题。

0

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

Stringfinal类,所以你不能创建子类。

而且,备案,有充足的理由为什么它会是,如果你可以做任何的这些东西

也许,你可以来做你想做的事最接近是创建一个自定义类型的CharSequence ...并依靠这样的事实,即许多标准API接受CharSequence而不是String。或者,也许你应该让你的自定义类型成为一个字符串持有者类型......就像@TimB用他的答案说明的那样。


根据您最后的评论和你以前的问题,我认为你真正需要做的是实施西河您ArrayList<String>。或者,也许你可以使用Xstream Annotations。当然黑客你的应用程序的类型,使XML看起来不错,似乎是错误的方法。

+0

我同意@JonSkeet。从你的例子中你不清楚你希望达到什么。我刚刚做出了一些假设并涵盖了一些明显的可能性。 –

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包含String,您可以查询String,你可以添加MyType年代到List

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

相关问题