我在下面的項目中使用了類型轉換。將對象的字符串表示形式轉換回java中的原始對象類型
**
ArrayList<Object> arr=new ArrayList<Object>();
String str=arr.toString();
**
我想現場海峽轉換回ArrayList<Object>
類型。
如何辦理?
感謝幫助
我在下面的項目中使用了類型轉換。將對象的字符串表示形式轉換回java中的原始對象類型
**
ArrayList<Object> arr=new ArrayList<Object>();
String str=arr.toString();
**
我想現場海峽轉換回ArrayList<Object>
類型。
如何辦理?
感謝幫助
你應該被使用Serializable
接口,ObjectOutputStream
/ObjectInputStream
和字節[]到字符串轉換如DatatypeConverter.parseBase64Binary
/DatatypeConverter.printBase64Binary
toString()
是一個協議。它被定義爲產生一些字符串或另一個字符串。這是而不是定義爲產生一個對象可逆的字符串。許多類toString
方法被設計用於產生人類可讀的結果,這幾乎保證了而不是是可逆的。
Java技術Universe包含許多用於將對象序列化爲字節的機制,這些機制可以存儲或傳輸,然後反序列化爲對象。這些包括內置的Java對象流,內置的Java JAX-B XML編組/解組技術,以及開放源代碼替代品,就像Jackson用於映射Json或Yaml以及許多其他映射一樣。
要做到這一點的唯一方法是覆蓋ArrayList中對象的toString()
方法。假設你的對象有2個屬性:int size
和String 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));
}
如果您希望使用本機對象,請創建您自己的對象並擴展本機。
除此之外,沒有辦法做你想做的。並注意這是非常容易出錯!所以一定要檢查字符串的長度,數組的大小以及什麼。
[將字符串轉換爲類對象]的可能重複(http://stackoverflow.com/questions/5401467/convert-string-into-a-class-object) – River
使用'toString()'不等於到*類型轉換*,而僅僅是原始對象的文本表示,在本例中爲'arr' –