2014-12-25 3 views
2

내 자신이 만든 클래스가 println()이 인쇄하도록 지원해야하는 것은 무엇입니까? 예를 들어 나는이클래스에서 println을 지원하는 방법은 무엇입니까?

public class A { 
... 
} 

클래스가 "A"코드가 작동하도록해야 어떤 방법 :

public static void main() { 
    A a = new A(); 
    System.out.println(a); 
} 

내가 toString 메소드 오버로드해야한다는 추측이 있습니다. 내가 맞습니까? 이것이 충분하나요?

+0

무엇을 인쇄하려고합니까? 'sysout'은 클래스'A'의 객체'a'에'toString'을 호출 한 결과를 인쇄하려고 시도합니다. – mystarrocks

+0

없음. printStream에 println() 메서드가 있으므로 Object를 인수로 사용하므로 항상 작동합니다. http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println%28java .lang.Object % 29. –

답변

5

System.out.println(Object)을 사용하여 모든 개체를 인쇄 할 수 있습니다. println의 오버로드 된 버전은 객체의 표현을 toString으로 출력합니다. 당신이 인쇄 될 것입니다 무엇을 사용자 정의 할 경우, 예를 들어, Object#toString() 메서드를 재정의해야합니다

public class A { 
    private String foo; 

    @Override 
    public String toString() { 
     // When you print out instance of A, value of its foo 
     // field will be printed out 
     return foo; 
    } 
} 

당신이 Object 클래스에서 Object#toString() 방법, 기본 구현을 재정의하지 않는 경우 사용됩니다,이 가지고있는 형태 (클래스 이름과 인스턴스의 해시 코드의 16 진수 표현) :

public String toString() { 
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
} 

보너스 : 여러 분야의 toString() 구현을 작성해야하는 경우,보다 쉽게 ​​할 수있는 도구가 있습니다. 예를 들어, Commons Lang의 ToStringBuilder. 또는 IntelliJ IDEA와 같은 일부 Java IDE는 클래스 필드를 기반으로 toString을 생성합니다.

2

당신은이에 대한 toString() 방법의 재정의를 제공해야합니다

public class A { 
    @Override 
    public String toString() { 
     return "A"; 
    } 
} 

방법은 객체의 문자열 표현을 반환합니다. 일반적으로, toString 메소드는,이 객체를 「텍스트로 표현한다」캐릭터 라인을 돌려줍니다.

0

toString() 메서드를 구현해야합니다. 당신이 그로부터 돌아 오는 모든 것은 인쇄 될 것입니다.

관련 문제