2014-05-12 5 views
-1

이중 중괄호 초기화는 Java 코드 컨텍스트를 더 잘 볼 수있는 좋은 방법입니다.StringBuilder를 이중 중괄호 초기화로 사용

불행하게도 모두 StringBuilder는

final String[] array = new String[] {"A", "B"}; 
    System.out.println(new StringBuilder(){{ 
          for (String s : array){ 
           append(s + "\n"); 
          } 
         }}.toString()); 

같이 이중 중괄호 초기화와 함께이 좋은 대안이 사용할 수없는 이유는 무엇입니까? 더 좋은 제안이 있습니까? 이 질문에 대한 나의 의도는 문자열 연결을위한 방법을 찾는 것이 아닙니다. 내 의도 StringBuilder 함께 이중 중괄호를 사용하는 방법을 찾는 것입니다.

final String[] array = new String[] {"A", "B"}; 
    System.out.println(new Object(){ 
     @Override public String toString(){ 
      StringBuilder stringBuilder = new StringBuilder(); 
      for (String s : array){ 
       stringBuilder.append(s + "\n"); 
      } 
      return stringBuilder.toString(); 
     } 
    }); 
+0

출력은 내 예이다 - 나는 –

+0

의 StringBuilder가 동적으로 다양한 문자열, 이중 중괄호 초기화를 구성하는 데 사용되는 이중 중괄호 초기화를 사용하기위한 가능성을 찾고자하는 정확한 반대 정적 상수를 구성하는 보통이다. 어쩌면 당신의 실제 시나리오가 나에게 분명하지 않을 수도 있지만 당신이하려고하는 것은 옳다고 생각하지 않습니다. – gadget

답변

0

그냥 문자열 배열에서 문자열을 만드는 달성하기 위해 무엇을하려고하는, 당신은 Arrays.toString() method 사용할 수있는 경우 :

System.out.println(Arrays.toString(array)); 

이 메소드는, 지정된 배열의 캐릭터 라인 표현을 돌려줍니다 .

+0

문자열의 출력은 내 예제 일뿐입니다. 이중 중괄호 초기화를 사용할 가능성을 찾고 있습니다. –

0

추가 유틸리티 클래스는 이중 중괄호 초기화가 가능합니다.

public static class StringBuild{ 
    private StringBuilder stringBuilder = new StringBuilder(); 

    public void append(String string){ 
     stringBuilder.append(string); 
    } 

    @Override 
    public String toString(){ 
     return stringBuilder.toString(); 
    } 
} 

로 난의 StringBuilder 객체의 클래스가 변경 되었기

final String[] array = new String[] {"A", "B"}; 
    System.out.println(new StringBuild(){{ 
      for (String s : array){ 
       append(s + "\n"); 
      } 
     } 
    }); 
+0

자신의 질문에 대한 답으로 보입니다. 투표를 열어두기. –

0

대체 방법은 허용되지 작성할 수있다.

StringBuilder가 최종이므로 프로그램의 첫 번째 옵션이 작동하지 않습니다. 그리고 최종 수업을 변경할 수는 없습니다. 모든 상황에서 작동하는 다음 코드를 사용할 수 있습니다. 문자열의

final String[] array = {"a", "b"}; 
    StringBuilder sb = new StringBuilder(new Object(){ 
     @Override 
     public String toString() { 
      String str = ""; 
      for(String st : array){ 
       str+=st; 
      } 
      return str; 
     } 
    }.toString()); 
    System.out.println(sb); 
관련 문제