2014-09-12 5 views
0

나는이 내 방법 중 하나에서 하나 개의 클래스 Data.java는.toString()을 수행 한 후 객체를 다시 얻는 방법은 무엇입니까?

public class Data{ 
    private String name; 
    private String age; 
    // getters and setters for the above fields 
} 

내가

String newData = getData().toString(); 

을 수행하지만 지금은 데이터 객체 다시 상태에서 대신 문자열 객체합니다. 그래서 자바에서 이것을 수행하는 방법.

+0

** ** 기술적으로 ** 당신이 할 수있는 ** ** 할 수있다 ** 만약 ** toString()이 "name = abc, age = 42 "당신은 그것을 파싱하고 필요한 데이터를 검색 할 수 있습니다). 여전히,'toString()'은 단지 그것을 위해 설계된 것이 아닙니다.하지 마십시오. 그리고 만약 당신이'toString()'을 오버라이드하지 않는다면, 그것은 본질적으로 객체의 해쉬 코드를 반환합니다 - 그 정보를 가지고, 당신은 객체를 다시 생성 할 수 없습니다 **. –

답변

1

아니요.

toString()loggingdebug을위한 것입니다. serializingstate of an Object을위한 것이 아닙니다.

해당 개체가 serialization을 지원하는 경우 serializationdeserialization으로 이동하여이 작업을 수행하는 방법을 찾아보십시오.

+0

좋아 .. 그래서 어떻게 든 문자열로 데이터 개체를 변환하고 다음 데이터 개체로 다시 원하는 다른 개체에 ... 변환해야 할 인수로 문자열을 걸리는 하나의 메서드가 ... 그래서 거기에 어떤 방법으로 그것을 할 – anand

+0

@anand입니다 앞뒤로 변환하기 위해'serialization' 또는'Json'을 사용하십시오. [this] (http://stackoverflow.com/questions/8887197/reliably-convert-any-object-to-string-and-then-back- 다시). –

2

getData()은 개체를 반환하기 전에 개체를 반환했습니다.

+1

도살 자. 하지만 당신은 이것이 OP 질문이 아니라는 걸 압니다. –

1

당신은 그렇게 할 수 없습니다. 당신은 toString()

에서 다시 Object를 얻을 수없는 경우, Serialization을 사용할 수 있습니다

String newData = getData().toString(); 

유효 하나입니다. 하지만 그건 당신이 요구하는 것이 아닙니다.

다음과 같이 똑똑 할 수도 있습니다. JSon을 사용하십시오.

@Override 
public String toString() { 
    return new Gson().toJson(this); 
} 

지금 당신은 당신은 다시 같은 개체를 얻을 수 없다 다시

String str=myClass.toString(); 
MyClass myClass=new Gson().fromJson(str,MyClass.class); 
0

객체받을 수 있습니다. 그러나 당신이 할 수있는 것은 반환 된 String의 각 매개 변수를 제거하여 원래 값과 동일한 값을 가진 새로운 객체를 생성 할 수 있다는 것입니다. 이를 위해 반환 된 문자열에있는 객체의 모든 매개 변수를 가져와야합니다.

전반적으로 매우 나쁜 생각입니다.

관련 문제