有人可以帮助我将一个对象序列化为字符串吗?我的代码的结果有点奇怪,我需要获取一个toString();。 methode或可以将对象序列化为字符串的东西,但我什么都不知道。
感谢您的帮助
结果为getString->仅“空”
没有getString()的结果; -> Fruit @ 4dd8dc3,Fruit @ 6d03e736,Fruit @ 568db2f2,Fruit @ 378bf509,Fruit @ 5fd0d5ae, Fruit @ 2d98a335,Fruit @ 16b98e56,Fruit @ 7ef20235“
import java.io.Serializable;
public class Fruit implements Comparable<Fruit>,Serializable{
String getString;
String name;
int gewicht;
public String getString() {
return this.getString;
}
public Fruit(String name, int gewicht) {
this.name=name;
this.gewicht=gewicht;
}
public int compareTo(Fruit otherFruit) {
if(this.gewicht < otherFruit.gewicht)
return -1;
if(this.gewicht>otherFruit.gewicht)
return 1;
return 0;
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Iterator;
import java.util.TreeSet;
public class FruitTree {
public static void main(String[] args) {
TreeSet<Fruit> fruitTree = new TreeSet<Fruit>();
fruitTree.add(new Fruit("Kiwi",5));
fruitTree.add(new Fruit("Kirsche",1));
fruitTree.add(new Fruit("Ananas",75));
fruitTree.add(new Fruit("Zitrone",15));
fruitTree.add(new Fruit("Grapefruit",44));
fruitTree.add(new Fruit("Banane",55));
fruitTree.add(new Fruit("Kirsche",2));
fruitTree.add(new Fruit("Kiwi",8));
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("IO.txt"));
Iterator<Fruit> it = fruitTree.iterator();
while(it.hasNext()) {
oos.writeObject(it.next());
}
oos.writeObject(null);
ObjectInputStream ois = new ObjectInputStream (new FileInputStream("IO.txt"));
Object readObject=null;
TreeSet<Fruit> deserializedFruits= new TreeSet<Fruit>();
do {
readObject=ois.readObject();
if(readObject !=null)
deserializedFruits.add((Fruit) readObject);
}
while (readObject!=null);
it=deserializedFruits.iterator();
while(it.hasNext()) {
System.out.println(it.next().getString());
ois.close();
oos.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
有人可以帮助我将一个对象序列化为字符串吗?我的代码的结果有点奇怪,我需要获取一个toString();。 methode或可以将对象序列化为字符串的东西,但我什么都不知道。
感谢您的帮助
答案 0 :(得分:0)
在类中添加implements Serializable
不会覆盖默认的Object.toString
实现-这不是Java的工作方式(顺便说一句,该默认实现实际上将为您提供所获得的东西-例如Fruit@5fd0d5ae
-如何运作)
您需要做的就是自己覆盖toString
-例如
public class Fruit implements Comparable<Fruit>,Serializable {
// ...
@Override
public String toString() {
return "name: " + this.name + ", gewicht: " + String.valueOf(this.gewicht);
}
}
或使用一些可以为您生成此方法的现有工具(例如lombok),甚至更好的方法是,它允许您将类对象序列化为某些常见格式,例如 JSON 或XML(为此请查看gson或Jackson)