2010-07-14 3 views
2

저는 사람들이 자바의 toString() 메소드에 무엇을 넣었는지 궁금합니다.Java toString() - toString에 클래스 이름을 포함합니까?

몇 가지 새로운 클래스에 몇 가지를 추가했으며 클래스 이름을 포함해야하는지 여부를 궁금해하고있었습니다. 클래스 ClassConfig 나는이 정말 사례 문제에 대한 경우입니다

@Override 
public String toString() { 
    return "ClassConfig:" + name; //frozen 
} 

또는

@Override 
public String toString() { 
    return name; //frozen 
} 

+8

같은 ... – nanda

+0

이 고정되었습니다. 죄송합니다. 우리가 복사하여 붙여 넣기를 사용해서는 안되는 이유가 하나 있습니다. –

답변

3

를 갖게 할 필요가있는 경우는 내가 결정하지 못할에서

. 귀하의 의도가 디버깅하는 경우 클래스 이름을 포함하는 것이 좋습니다.

+0

특히 IDE에서 디버깅 할 때 클래스 이름을 toString()에 포함시키는 것은 IDE가 클래스 이름을 제공 할 것이기 때문에 꽤 쓸모가 없습니다. – f1sh

+0

그가 디버깅하는 방법을 모르고 콘솔을 디버깅하는 방법을 제외하고는 예외입니다. 그게 잘못된 건 없어요. 우리는 전에 거기에 있었지, 그렇지? – nanda

+1

로그 파일에 기록 된 내용을 기반으로 응용 프로그램을 디버깅하는 경우 어떻게해야합니까? 나는'toString' 메서드가 쓸모 없다고 완전히 반대하고 있습니다. –

3

날씨에 따라 달라 지므로 클래스를 String으로 나타내거나 그렇지 않도록하는 것이 좋습니다. 그것이 의미가있는 경우 사용할 수있는 String을 반환하도록하면 클래스 이름은 그다지 유용하지 않습니다. String 표현이 무언가에 사용되지 않을 것 같으면 클래스 이름, 변수의 현재 상태 및 원하는 내용을 넣으십시오.

0

toString() 메서드는 원하는대로 반환 할 수 있습니다. 지금까지 클래스 이름을 반환하기 위해 toString()을 재정의 한 적이 없습니다.

+1

그럼 Java를 매우 오랫동안 프로그래밍하지 못했습니다 :-) (게다가, OP는 ** 클래스 이름을 포함하여 **에 대해 말하고 있습니다.) –

+0

디버거를 사용할 수 있습니다. – Akku

1

당신이 원하는 것을 toString()에 넣는 것은 당신에게 달려 있습니다. 보통, toString()는 작성되어 객체를 읽기 가능하게합니다. 기본적으로 toString()은 읽을 수없는 컴퓨터 주소를 표시합니다.

public class Price { 
     private double price = 10.0; 
     private String ccy = "€"; 

     @Override 
     public String toString() { 
      return price + " " + ccy; //will display "10.00000000 €" 
     } 

}

3

나는, 필드 값 외에, 클래스 이름과 필드 이름을 모두 포함됩니다 :

예를 들어, 많은 사람들이이 같은 수준의 가격을 구현합니다. 심지어 super.toString()으로 전화를 걸 수도 있습니다.

처럼 지역 :

@Override 
String toString() { 
    return "ClassConfig{" + 
     "name=" + name + 
     "} " + super.toString(); 
} 
0

나는 개인적으로 디버깅시 유용하다 인쇄 할 클래스의 클래스 이름뿐만 아니라 주요 속성을 넣어 싶습니다.

관련 문제