【问题标题】:Convert a String representation of Object back to an Object of original type in java在java中将Object的String表示形式转换回原始类型的Object
【发布时间】:2015-09-08 05:30:39
【问题描述】:

我在我的项目中使用下面给出的类型转换。

**

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

**

我想将字段 str 转换回 ArrayList&lt;Object&gt; 类型。

如何通过?

感谢帮助

【问题讨论】:

标签: java


【解决方案1】:

这样做的唯一方法是覆盖 ArrayList 中 Object 的 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;
}

为了再次创建对象,您还需要另一个构造函数或设置器:

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

如果您希望使用原生对象,请创建自己的对象并扩展原生对象。

除此之外,没有办法做你想做的事。请注意,这非常容易出错!所以一定要检查字符串的长度、数组的大小等等。

【讨论】:

    【解决方案2】:

    toString() 是一个协议。它被定义为产生一些字符串或另一个。它被定义为生成对对象可逆的字符串。许多类toString 方法旨在产生人类可读的结果,几乎可以保证是可逆的。

    Java 技术领域包含许多将对象序列化为字节的机制,这些字节可以存储或传输,然后反序列化为对象。其中包括内置的 Java 对象流、内置的 Java JAX-B XML 编组/解组技术,以及用于与 Json 或 Yaml 进行映射的 Jackson 等开源替代方案,以及许多其他技术。

    【讨论】:

      【解决方案3】:

      你应该使用Serializable接口,ObjectOutputStream/ObjectInputStream和byte[]到String转换比如DatatypeConverter.parseBase64Binary/DatatypeConverter.printBase64Binary

      【讨论】:

        猜你喜欢
        • 2016-12-25
        • 1970-01-01
        • 2013-06-16
        • 2011-10-04
        • 1970-01-01
        • 2013-01-24
        • 2018-03-22
        • 2022-01-17
        • 1970-01-01
        相关资源
        最近更新 更多