문제

외 물론,그 사용으로 프리미티브입니다.장(모든 경우)의 구현은 내가 볼만에서 유용한 프로그래머는 관점이다.


편집:내가 이해하는데 기본 행동,그 이유는 저는 언급된 구현:).고 내가 값을 얻을 재정의하는 그 일부에서 요구하는 문자열 표현은 내부에 있습니다.그러나,JDK 적어도,내가 참조 의 구현을 사용할 필요가 있을 때에는 디버그의 객체를 인스턴스가 있습니다.

왜 그 뿌리에서 개체 클래스,이후에만 유용한 GUI/디버깅을까요?은 거기에 다른 사용하여 내가 알지 못?

도움이 되었습니까?

해결책

ToString ()은 객체의 문자열 표현을 원할 때마다 유용합니다. 당연히 디버깅 목적으로 발생하지만 사용자에게 작업 결과를 출력하는 데 유효 할 수 있습니다.

예를 들어, 복소수를 처리하는 복잡한 클래스가 있다고 가정 해 봅시다. 다음과 같은 형식으로 사용자에게 인쇄하려면 3 + 2i, 매번 형식을 작성할 필요가 없으므로 ToString ()을 정의하면 유용하며 출력이 일관되게됩니다. 예를 들어 그 표현을 바꾸고 싶다면 3 + 2J, 복잡한 클래스에서 tostring () 메소드 만 터치하면됩니다.

따라서 ToString ()은 디버깅 목적이 아니라 객체의 일관된 문자열 표현을 얻는 좋은 방법입니다.

다른 팁

아니요, 키는 기본 구현을 무시해야한다는 것입니다. ToString() 유용하게 만들기 위해. ToString() UI에 무언가의 가치를 다시 출력하는 좋은 방법이 될 수 있습니다.

간단한 예는 세 줄 (첫 번째, 중간, 마지막) 인 이름 클래스가있는 경우입니다. 당신은 가질 수 있습니다 ToString() UI에 대해 형식화하는 메소드 : "마지막, 첫 번째 중간".

또는 수학적 작동을 저장하는 클래스 (값 값 = 2, 오른쪽 = 3, 결과 = 6 및 연산자 열거 = 곱하기). 부르다 ToString() "2 * 3 = 6"을 얻으려면.

하지만, 다양한 다른 것을 갖는 것이 더 일반적 일 것입니다. To<qualifier>String() .NET와 같은 방법 DateTime 수업. (ToShortDateString(), ToLongDateString(), ToLongTimeString(), ...)

편집 : 그것이 왜 Object 클래스, 그것은 단순히 때문입니다 ToString() 유효한 작업입니다 아무것.

또한 문자열은 데이터 유형이나 데이터 소비자간에 마샬링하는 좋은 방법이 될 수 있습니다. (실질적으로) (실질적으로) 가문화 가능하고 추가 인코딩 또는 관리가 필요하지 않기 때문입니다.

내 개인적인 취향은 tostring ()가해야한다는 것입니다 절대 디버깅 이외의 다른 데 사용됩니다. 객체에 대한 문자열을 생성하려면 의도를 명확하게 문서화하는 별도의 메소드 (getName (), getDescription () 등)을 제공하십시오. toString ()의 구현에 의존하지 마십시오.

문제는 많은 개발자들이 ToString ()를 디버그 레벨 문자열로보고 그것을 변경하지 않는다고 생각한다는 것입니다 (예 : 새 필드가 추가되거나 제거 될 때). 일부 자동화 된 Tostring () 빌더는 반사를 사용하여 필드에서 tostring ()을 생성합니다.

나는이 선호도가 수년에 걸쳐 나에게 도움이된다는 것을 알았습니다.

내가 말할 수있는 것은 추가 디버그 정보를 표시하기 위해 클래스의 Tostring을 변경했을 때 코드가 중단되었다는 것입니다.

문제의 코드는 Tostring의 가치를 일부 내부 인으로 사용하기로 결정한 GUI 라이브러리였습니다 (몇 년 전이었습니다 ... 정확히 무엇이되었는지 잊어 버렸습니다). 최종 결과는 더 이상 해당 라이브러리를 사용하지 않았다는 것입니다.

나는 많은 사람들이 토스트 링이 디버깅에 사용되는 것으로보고 (당신이 사용 해야하는 것에 대한 당신의 의견에 관계없이) 프로그래밍 방식으로 반환하기 위해 반환 된 가치를 사용하는 것은 문제가된다고 말합니다. (구문 분석과 마찬가지로) 또는 사용자에게 표시하십시오.

Tostring 방법을 100% 제어한다면 항상 원하는 것을하십시오.

따라서 질문에 답하기 위해 Tostring은 디버깅에 유용 할뿐만 아니라 원하는 것을 할 수 있습니다. 그러나 토스트 링이 당신을 불행하게 만드는 방식으로 변화해도 놀라지 마십시오.

내 경험상 Tostring ()은 디버깅 및 로깅 외에는 가치가 거의 없습니다. 시간이 지남에 따라 형식이나 내용에 의존 할 수는 없으므로 인간 읽을 수있는 것 외에는 가장 간단한 객체 (예 : 원시 객체 유형) 이외의 다른 것에 의존하지 않습니다. 여러 데이터 멤버가있는 경우 시간이 지남에 따라 유형이나 숫자가 변경 될 수 있으며 ToString ()의 출력과 함께 변경 될 수 있습니다.

내가 강하게 만들고 싶은 또 다른 요점. toString ()에서 다른 방법을 호출하지 마십시오. 디버거의 중단 점에서 변수 내용을 확인한 다음 ToString ()에서 메소드 호출로 인해 더 많은 코드가 실행되는 것보다 더 나쁘지 않습니다.

"Tostring"에 대해 언급 한 사람들이 소문자에 대해 언급 한 사람들이 일반적으로 Java에 대해 이야기하고 있으며, "Tostring"을 언급 한 사람들은 일반적으로 C#을 언급하고 있다고 지적하는 것이 중요하다고 생각합니다. 물론 이것은 모든 응답에 적용되지는 않습니다.

내 자신의 관찰에서 (나는 매일 두 가지 모두 사용), C#의 프로그래머는 유용한 텍스트 표현을 표시하기 위해 "Tostring"을 무시하는 것이 좋습니다. 반면, 자바에서는 이것을 거의 볼 수 없습니다. 사실, 나는 이것을 거의 보지 못한다.

-JP

먼저 toString 메소드는 객체의 사람이 읽을 수있는 텍스트 표현을 반환해야합니다.

이 문제는 제기되었습니다 효과적인 자바 ~처럼 항목 10 : 항상 무시하십시오 toString.

그것은 참조합니다 Java API 사양Object.toString 방법:

결과는 사람이 읽기 쉬운 간결하지만 유익한 표현이어야합니다.

디버깅을 제외하고는 toString 클래스 방법은 물체를 JList 또는 a JTable, 기본적으로 사용합니다 toString 방법 목록이나 테이블의 텍스트 양식으로 객체를 표시하는 메소드.

예를 들어, 제 경우에는 toString a에 추가되는 객체의 방법 JList 사용자가 GUI를 통해 목록의 항목에 대한 정보를 볼 수 있도록합니다.

따라서 실제로 사례가 있습니다 toString 방법은 디버깅 이외의 경우에 유용합니다. 열쇠는 toString 메소드 리턴 정보는 실제로 사람이 기본값이 아닌 볼 수있는 유용한 정보를 반환합니다. Object.toString 객체의 메모리 위치가 텍스트 표현에 사용되는 구현.

에 유용한

  1. GUI (PropertyGrid를 사용하는 경우 복잡한 속성, 구성원 텍스트를 양식)
  2. Databinding (그것이 작동하는 방식)

그리고 다른 문자열 출력.

ToString()라고도 하다.NET Framework 암시적으로 인쇄를 할 때 어떤 물체를 문자열입니다.

Console.WriteLine("My Object is" + object.ToString());

에 해당하는

Console.WriteLine("My Object is" + object);

기 때문에 ToString()는 암시적으로 호출됩니다.

내가 믿지만,확실하지 않다는 것을,그것을 사용하여 디버거를"value"의 개체입니다.이 수 있는 매우 편리하지만 제한된다.대부분의 경우 쓰기 당신의 자신의 비주얼 디버거하는 것이 더 나은 생각이 아니다.

AS3에서는 2D 어레이를 1D 어레이로 변환해야했습니다. 가장 빠른 (실행 속도) 및 가장 쉬운 (코딩 시간) 솔루션은 다음과 같습니다.

var new1DArray:Array = the2DArray.toString().split(",");

놀리지만 실제로 의도하고 매우 빠르게 작동합니다!

나는 dateTime 형식에 toString ()를 사용합니다.

http://hunterconcepts.com/content/tools/formats/

다른 사람들이 이미 말한 것 외에도 ToString ()을 우선시하는 것도 호출하는 컨트롤을 사용할 때 유용합니다. 예를 들어, 콤보 박스 :

myComboBox.Items.Add(new MyClass());
// now, whatever ToString() returns is shown in the
// ComboBox, but you can get the object back by through
// the SlectedItem property.

"의도 된"사용은 아니지만 데이터 직렬화에 사용했습니다.

storeToHardDrive(studentList.ToString());
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top