2015-06-22 23 views
-2

我在下面的項目中使用了類型轉換。將對象的字符串表示形式轉換回java中的原始對象類型

**

ArrayList<Object> arr=new ArrayList<Object>(); 
String str=arr.toString(); 

**

我想現場海峽轉換回ArrayList<Object>類型。

如何辦理?

感謝幫助

+0

[將字符串轉換爲類對象]的可能重複(http://stackoverflow.com/questions/5401467/convert-string-into-a-class-object) – River

+1

使用'toString()'不等於到*類型轉換*,而僅僅是原始對象的文本表示,在本例中爲'arr' –

回答

1

你應該被使用Serializable接口,ObjectOutputStream/ObjectInputStream和字節[]到字符串轉換如DatatypeConverter.parseBase64Binary/DatatypeConverter.printBase64Binary

0
toString()

是一個協議。它被定義爲產生一些字符串或另一個字符串。這是而不是定義爲產生一個對象可逆的字符串。許多類toString方法被設計用於產生人類可讀的結果,這幾乎保證了而不是是可逆的。

Java技術Universe包含許多用於將對象序列化爲字節的機制,這些機制可以存儲或傳輸,然後反序列化爲對象。這些包括內置的Java對象流,內置的Java JAX-B XML編組/解組技術,以及開放源代碼替代品,就像Jackson用於映射Json或Yaml以及許多其他映射一樣。

0

要做到這一點的唯一方法是覆蓋ArrayList中對象的toString()方法。假設你的對象有2個屬性:int sizeString name。你的構造函數可能是

public YourObject(int size, String name){ 
    this.size = size; 
    this.name = name; 
} 

現在你重寫你的對象:

@Override 
public String toString(){ 
    return Integer.toString(this.size) + "#" + this.name; 
} 

爲了重新創建對象,你還需要另一個構造函數或setter:

public YourObject(String attributes){ 
    String[] parts = attributes.split("#"); 
    this.size = Integer.parseInt(parts[0]); 
    this.name = parts[1]; 
} 

要從物體到字符串並返回:

List<YourObject> arr; //Initialise this array 
List<String> arrStrings = new ArrayList<String>(); 

//Convert to list of strings 
for (YourObject yourObject : arr){ 
    arrStrings.add(yourObject.toString()); 
} 

//Convert it back 
List<YourObject> yourObjects = new ArrayList<YourObject>(); 
for (String converted : arrStrings){ 
    yourObjects.add(new YourObject(converted)); 
} 

如果您希望使用本機對象,請創建您自己的對象並擴展本機。

除此之外,沒有辦法做你想做的。並注意這是非常容易出錯!所以一定要檢查字符串的長度,數組的大小以及什麼。

相關問題